找不到片段 SettingsFragment 的 id 0x7f0a000e 的视图
No view found for id 0x7f0a000e for fragment SettingsFragment
我是 Android 的新手,在 SOians 同胞的帮助下,我能够顺利进行。我正在实施 AppBar 项目以从 MainActivity 导航到相应的片段。以下代码是 MainActivity 的一部分。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up buttonAction, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
Fragment fragment = new SettingsFragment();
FragmentManager fragmentManager = this.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.SettingsFragment, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.action_kyc:
// go to kycfragment
break;
case R.id.action_about:
// go to aboutfragment
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
我收到非法参数异常“找不到片段 SettingsFragment 的 id 0x7f0a000e 的视图”
在这里和外面浏览了很多。 None 他们帮助了我。
请告诉我错误的原因以及解决方法。
堆栈摘录如下:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ptimer, PID: 7759
java.lang.IllegalArgumentException: No view found for id 0x7f0a000e (com.example.ptimer:id/SettingsFragment) for fragment SettingsFragment{5c8b099} (86b09f6f-49b4-470e-9753-e5acd603164c id=0x7f0a000e)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
I/Process: Sending signal. PID: 7759 SIG: 9
您的 MainActivity
XML 布局如何?
引用您的代码:
fragmentTransaction.replace(R.id.SettingsFragment, fragment);
您的问题很可能是布局中没有 ID 为 SettingsFragment
的视图。
replace
的第一个参数应该指向布局文件中的片段容器。例如。如果您的布局包括:
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.ExampleFragment" />
那就是fragmentTransaction.replace(R.id.fragment_container, fragment);
另见 https://developer.android.com/guide/fragments/create#add and https://developer.android.com/guide/fragments/transactions#add-remove
根据您的用例,您还可以在新 activity 中打开设置,而不是替换 MainActivity
.
中的片段
我是 Android 的新手,在 SOians 同胞的帮助下,我能够顺利进行。我正在实施 AppBar 项目以从 MainActivity 导航到相应的片段。以下代码是 MainActivity 的一部分。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up buttonAction, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
Fragment fragment = new SettingsFragment();
FragmentManager fragmentManager = this.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.SettingsFragment, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case R.id.action_kyc:
// go to kycfragment
break;
case R.id.action_about:
// go to aboutfragment
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
我收到非法参数异常“找不到片段 SettingsFragment 的 id 0x7f0a000e 的视图”
在这里和外面浏览了很多。 None 他们帮助了我。
请告诉我错误的原因以及解决方法。
堆栈摘录如下:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ptimer, PID: 7759
java.lang.IllegalArgumentException: No view found for id 0x7f0a000e (com.example.ptimer:id/SettingsFragment) for fragment SettingsFragment{5c8b099} (86b09f6f-49b4-470e-9753-e5acd603164c id=0x7f0a000e)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
I/Process: Sending signal. PID: 7759 SIG: 9
您的 MainActivity
XML 布局如何?
引用您的代码:
fragmentTransaction.replace(R.id.SettingsFragment, fragment);
您的问题很可能是布局中没有 ID 为 SettingsFragment
的视图。
replace
的第一个参数应该指向布局文件中的片段容器。例如。如果您的布局包括:
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.ExampleFragment" />
那就是fragmentTransaction.replace(R.id.fragment_container, fragment);
另见 https://developer.android.com/guide/fragments/create#add and https://developer.android.com/guide/fragments/transactions#add-remove
根据您的用例,您还可以在新 activity 中打开设置,而不是替换 MainActivity
.