エラー: java.lang.RuntimeException: アクティビティ ComponentInfo を開始できません {com.example.todolist/com.example.todolist.ToDoListActivity}: android.view.InflateException: バイナリ XML ファイルの行 #6: クラス フラグメントの膨張エラー
この質問が以前に尋ねられたことは知っていますが、それらを検索しましたが、解決策が見つかりませんでした。何も触れずにアプリを起動してから数秒後にこのエラーが発生し、フラグメントが読み込まれず、クラッシュします。
2 つの Fragment (ListFragment と EditText) を含む 1 つの FragmentActivity クラスがあります。私の最小 SDK サポートは 7 なので、サポート ライブラリのインポートを使用しています。
FragmentActivity のコードは次のとおりです。
public class ToDoListActivity extends FragmentActivity
implements NewItemFragment.OnNewItemAddedListener{
private ArrayList<String> todoItems;
private ArrayAdapter<String> aa;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_do_list);
FragmentManager fm = getSupportFragmentManager();
ToDoListFragment toDoListFragment = (ToDoListFragment)
fm.findFragmentById(R.id.ToDoListFragment);
aa = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
todoItems);
toDoListFragment.setListAdapter(aa);
}
public void onNewItemAdded(String newItem){
todoItems.add(newItem);
aa.notifyDataSetChanged();
}
FragmentActivity のレイアウトは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/NewItemFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.example.todolist.NewItemFragment"/>
<fragment
android:id="@+id/ToDoListFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.example.todolist.ToDoListFragment" />
</LinearLayout>
これは EditText フラグメント コードです。
public class NewItemFragment extends Fragment {
private OnNewItemAddedListener onNewItemAddedListener;
public interface OnNewItemAddedListener {
public void onNewItemAdded(String newItem);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
onNewItemAddedListener = (OnNewItemAddedListener)activity;
}catch (ClassCastException e) {
throw new ClassCastException(activity.toString() +
"must implement OnNewItemAddedListener");
}
}
public View OnCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View view = inflater.inflate(R.layout.new_item_fragment, container
, false);
final EditText myEditText = (EditText)view.findViewById(R.id.myEditText);
myEditText.setOnKeyListener(new View.OnKeyListener() {
...
});
return view;
}
}
これは EditText フラグメント レイアウトです。
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/addItemHint"
android:contentDescription="@string/addItemContentDescription" />
私のListFragmentクラスはデフォルトのレイアウトを使用しているので、クラス宣言を含む.javaファイルのみを作成しました(クラス名はフラグメントアクティビティXMLに書かれた名前と同じです)
これは LogCat の残りの部分です。
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.os.Handler.dispatchMessage(Handler.java:99)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.os.Looper.loop(Looper.java:123)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.ActivityThread.main(ActivityThread.java:3691)
02-17 17:33:25.135: E/AndroidRuntime(23262): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 17:33:25.135: E/AndroidRuntime(23262): at java.lang.reflect.Method.invoke(Method.java:507)
02-17 17:33:25.135: E/AndroidRuntime(23262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
02-17 17:33:25.135: E/AndroidRuntime(23262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
02-17 17:33:25.135: E/AndroidRuntime(23262): at dalvik.system.NativeStart.main(Native Method)
02-17 17:33:25.135: E/AndroidRuntime(23262): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:587)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-17 17:33:25.135: E/AndroidRuntime(23262): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.Activity.setContentView(Activity.java:1663)
02-17 17:33:25.135: E/AndroidRuntime(23262): at com.example.todolist.ToDoListActivity.onCreate(ToDoListActivity.java:18)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
02-17 17:33:25.135: E/AndroidRuntime(23262): ... 11 more
02-17 17:33:25.135: E/AndroidRuntime(23262): Caused by: java.lang.IllegalStateException: Fragment com.example.todolist.NewItemFragment did not create a view.
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:303)
02-17 17:33:25.135: E/AndroidRuntime(23262): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)