Java 为什么在将数据从一个片段发送到另一个片段时出错
我读过这些问题和许多其他问题,但没有人能轻松解释 嗨,我对编程和stackoverflow很陌生 我创建了一个MainActivity,其中有两个片段Java 为什么在将数据从一个片段发送到另一个片段时出错,java,android,bundle,Java,Android,Bundle,我读过这些问题和许多其他问题,但没有人能轻松解释 嗨,我对编程和stackoverflow很陌生 我创建了一个MainActivity,其中有两个片段 <fragment android:id="@+id/fragment1" android:name="fragments.first" android:layout_width="match_parent" android:layout_hei
<fragment
android:id="@+id/fragment1"
android:name="fragments.first"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</fragment>
<fragment
android:id="@+id/fragment2"
android:name="fragments.second"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</fragment>
但接收误差
2021-05-04 03:19:28.676 23166-23166/com.example.mcqapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mcqapp, PID: 23166
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mcqapp/com.example.mcqapp.activities.AdminPost}: android.view.InflateException: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3556)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Caused by: android.view.InflateException: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Error inflating class fragment
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
at fragments.second.onCreate(second.java:20)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2586)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:838)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1133)
at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1393)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3205)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1069)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1126)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
at com.example.mcqapp.activities.AdminPost.onCreate(AdminPost.java:24)
at android.app.Activity.performCreate(Activity.java:7955)
at android.app.Activity.performCreate(Activity.java:7944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3531)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
2021-05-04 03:19:28.677 23166-23166/com.example.mcqapp E/AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
我解决了。我从活动中删除了第二个片段,并将第一个片段转换为框架布局,因为数据重叠,并以编程方式添加了第一个片段
<FrameLayout
android:id="@+id/fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
getSupportFragmentManager().beginTransaction().add(R.id.fragment1,new first()).commit();
我读了很多StackOverflow问题,并使用了框架布局,因为重叠正在发生,对吗?当活动启动时,您已经在活动中加载了这两个片段。因此,一旦创建了这两个片段,您期望参数
“Question1”
的片段就会失败,因为bundle将为null,因为没有向它发送参数。因此出现了NullPointerException,那么如何解决它呢?正如错误日志中提到的,布局名称activity_admin_post在第25行中有一个错误,这就是它导致崩溃的原因。检查布局文件并首先解决问题。如果我在第二个片段上注释掉捆绑包,代码将毫无错误地开始,然后返回到第一个。问题是bundle为null。但不应该,因为我还没有按下按钮
2021-05-04 03:19:28.676 23166-23166/com.example.mcqapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mcqapp, PID: 23166
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mcqapp/com.example.mcqapp.activities.AdminPost}: android.view.InflateException: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3556)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Caused by: android.view.InflateException: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #25 in com.example.mcqapp:layout/activity_admin_post: Error inflating class fragment
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
at fragments.second.onCreate(second.java:20)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2586)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:838)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1133)
at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1393)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3205)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1069)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1126)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170)
at com.example.mcqapp.activities.AdminPost.onCreate(AdminPost.java:24)
at android.app.Activity.performCreate(Activity.java:7955)
at android.app.Activity.performCreate(Activity.java:7944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3531)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
2021-05-04 03:19:28.677 23166-23166/com.example.mcqapp E/AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7948)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
<FrameLayout
android:id="@+id/fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
getSupportFragmentManager().beginTransaction().add(R.id.fragment1,new first()).commit();
Bundle bundle = getArguments();
if (bundle != null){
String question = bundle.getString("Question1");
String Question = question.toString();
textView.setText(Question);