私はあなたに接続されている人のグループとチャットできるゲームを作成しようとしています。ルーム。このチャットを横向きモードでUI(ACTUAL GAME ACTIVITY)の右側に置いておきたいフラグメント内でチャットしたいと思います。フラグメントレイアウトとEditText内でListViewを使用しています。私は様々な答えを見て、解決策を見つけることができませんでした。 firebaseリアルタイムデータベースを使用してリストビューにデータを挿入しています。 何か助けていただければ幸いです。エラー:android.view.InflateException:バイナリXMLファイルの行#8:バイナリXMLファイルの行#8:クラスの断片化をエラーするエラー
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>
エラーログ:
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)
迅速な対応をありがとうございます。コンテナはどのクラスに属していますか?(container =(FrameLayout)findViewById(R.id.container); – sac
このonCreate()メソッドはメインアクティビティにコード内のmainGameActivityとして属します –
シンボル 'container'を解決できません。 – sac