Ich versuche ein Spiel zu erstellen, in dem Sie mit einer Gruppe von Leuten chatten können, die mit einem verbunden sind Zimmer. Ich möchte diesen Chat innerhalb des Fragments haben, das ich will, dass es auf der rechten Seite von UI (ACTUAL GAME ACTIVITY) im Querformatmodus ist. Ich benutze ListView innerhalb des Fragment-Layouts und EditText auch. Ich habe verschiedene Antworten gesehen und konnte keine Lösung finden. Ich verwende Firebase Realtime-Datenbank, um Daten in die Listview einzufügen. Jede Hilfe wird geschätzt.Fehler: android.view.InflateException: Binär XML-Datei Zeile # 8: Binär XML-Datei Zeile # 8: Fehler beim Aufblasen von Klassenfragment
mainGameActivity:
package com.example.lrmah.rajaranichorpolice;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.lrmah.rajaranichorpolice.Chat.chatFragmentActivity;
public class mainGameActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_game);
Bundle bundle=new Bundle();
bundle.putString("name", "From Activity");
//set Fragmentclass Arguments
chatFragmentActivity fragobj=new chatFragmentActivity();
fragobj.setArguments(bundle);
}
}
chatFragmentActivity:
package com.example.lrmah.rajaranichorpolice.Chat;
import android.app.Fragment;
import android.app.ListFragment;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.ProgressBar;
import com.example.lrmah.rajaranichorpolice.R;
import com.example.lrmah.rajaranichorpolice.playerClass;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.example.lrmah.rajaranichorpolice.playerClass;
import java.util.ArrayList;
import java.util.List;
public class chatFragmentActivity extends Fragment {
public static final String ANONYMOUS = "anonymous";
public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000;
private ListView mMessageListView;
private MessageAdapter mMessageAdapter;
private ProgressBar mProgressBar;
private ImageButton mPhotoPickerButton;
private EditText mMessageEditText;
private Button mSendButton;
private String mUsername;
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mMessagesDatabaseReference;
private ChildEventListener mChildEventListener;
private DatabaseReference mMessagesRoomDatabaseReference;
List<playerClass> playerClassList = new ArrayList<>();
String roomCode;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
getActivity().setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
initViews();
return inflater.inflate(R.layout.chat_fragment_layout,container,false);
//accesing database
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
@Override
public void onDetach() {
super.onDetach();
}
public void getDatabaseReferences()
{
mFirebaseDatabase= FirebaseDatabase.getInstance();
mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("messages");
mMessagesRoomDatabaseReference=mMessagesDatabaseReference.child(roomCode);
}
public void textChangedMethod()
{
mMessageEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.toString().trim().length() > 0) {
mSendButton.setEnabled(true);
} else {
mSendButton.setEnabled(false);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)});
}
public void childEventListenerMethod()
{
mChildEventListener= new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
playerClass playerClassOBJ= dataSnapshot.getValue(playerClass.class);
mMessageAdapter.add(playerClassOBJ);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mMessagesDatabaseReference.addChildEventListener(mChildEventListener);
}
public void initListView()
{
mMessageAdapter = new MessageAdapter(getActivity(), R.layout.item_message, playerClassList);
mMessageListView = (ListView) getActivity().findViewById(R.id.messageListView);
mMessageListView.setAdapter(mMessageAdapter);
}
public void onClickingSend()
{
// Send button sends a message and clears the EditText
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO: Send messages on click
playerClass playerClassOBJ = new playerClass(null, mUsername, mMessageEditText.getText().toString(),null,null);
//push the message to database in the node "messages"
mMessagesRoomDatabaseReference.push().setValue(playerClassOBJ);
// Clear input box
mMessageEditText.setText("");
}
});
}
public void getRoomCode()
{
//passing value from activity
roomCode=getArguments().getString("name");
}
public void initViews()
{
mProgressBar = (ProgressBar) getView().findViewById(R.id.progressBar);
mPhotoPickerButton = (ImageButton) getView().findViewById(R.id.photoPickerButton);
mMessageEditText = (EditText) getView().findViewById(R.id.messageEditText);
mSendButton = (Button) getView().findViewById(R.id.sendButton);
// Initialize progress bar
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
}
}
chat_Fragment_Layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<ListView
android:id="@+id/messageListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/linearLayout"
android:stackFromBottom="true"
android:divider="@android:color/transparent"
android:transcriptMode="alwaysScroll"
tools:listitem="@layout/item_message"/>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:orientation="horizontal">
<ImageButton
android:id="@+id/photoPickerButton"
android:layout_width="36dp"
android:layout_height="36dp"
android:background="@android:drawable/ic_menu_gallery" />
<EditText
android:id="@+id/messageEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1" />
<Button
android:id="@+id/sendButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:enabled="false"
android:text="@string/send_button_label"/>
</LinearLayout>
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"/>
</RelativeLayout>
activity_main_game.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
>
<fragment
android:name=
"com.example.lrmah.rajaranichorpolice.Chat.chatFragmentActivity"
android:id="@+id/chatFragmentId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp" />
</RelativeLayout>
Fehlerprotokoll:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lrmah.rajaranichorpolice, PID: 7655
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lrmah.rajaranichorpolice/com.example.lrmah.rajaranichorpolice.mainGameActivity}: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.lrmah.rajaranichorpolice.Chat.chatFragmentActivity.initViews(chatFragmentActivity.java:223)
at com.example.lrmah.rajaranichorpolice.Chat.chatFragmentActivity.onCreateView(chatFragmentActivity.java:61)
at android.app.Fragment.performCreateView(Fragment.java:2352)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:959)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1149)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1255)
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2315)
at android.app.FragmentController.onCreateView(FragmentController.java:99)
at android.app.Activity.onCreateView(Activity.java:6093)
at android.support.v4.app.BaseFragmentActivityApi14.onCreateView(BaseFragmentActivityApi14.java:41)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:67)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:784)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.inflate(LayoutInflater.java:525)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at com.example.lrmah.rajaranichorpolice.mainGameActivity.onCreate(mainGameActivity.java:12)
at android.app.Activity.performCreate(Activity.java:6955)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Vielen Dank für die schnelle Antwort. Zu welcher Klasse gehört der Container?(In Container = (FrameLayout) findViewById (R.id.container); – sac
diese onCreate() -Methode gehört zur Haupttätigkeit als mainGameActivity in Ihrem Code –
Es sagt nicht Symbol 'Container' lösen .. – sac