Android settext()片段函数上的应用程序崩溃
我在学习如何相互交流。然而,我遇到了一个问题,我不知道如何解决它。我在谷歌上做了大量的研究,但没有发现任何东西,所以我希望你能帮助我。这是我的代码: 活动: 片段: XML:Android settext()片段函数上的应用程序崩溃,android,android-studio,Android,Android Studio,我在学习如何相互交流。然而,我遇到了一个问题,我不知道如何解决它。我在谷歌上做了大量的研究,但没有发现任何东西,所以我希望你能帮助我。这是我的代码: 活动: 片段: XML: 日志崩溃: com.example.eliazoury.teste/AndroidRuntime:致命异常:main 进程:com.example.eliazoury.testfragments,PID:8727 java.lang.RuntimeException:无法恢复活动{com.examp
日志崩溃:
com.example.eliazoury.teste/AndroidRuntime:致命异常:main
进程:com.example.eliazoury.testfragments,PID:8727
java.lang.RuntimeException:无法恢复活动{com.example.Eliazoury.testfragments/com.example.Eliazoury.testfragments.NextActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.view android.support.v4.app.FragmentActivity.findViewById(int)”
位于android.app.ActivityThread.performResumeActivity(ActivityThread.java:3581)
在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3621)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2862)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.view android.support.v4.app.FragmentActivity.findViewById(int)”
位于com.example.eliazoury.testfragments.NextFragment.updateTextView(NextFragment.java:38)
位于com.example.eliazoury.testfragments.nextractivity.updateDetailFragmentTextViewWithIntentTag(nextractivity.java:42)
位于com.example.eliazoury.testfragments.nextractivity.onResume(nextractivity.java:31)
位于android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1355)
在android.app.Activity.performResume上(Activity.java:7117)
位于android.app.ActivityThread.performResumeActivity(ActivityThread.java:3556)
在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3621)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2862)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)您必须初始化变量textView
。
否则,您将得到NullPointerException
,正如您发布的消息所示。
将此行添加到OnCreateView
方法中:
textView=view.findViewById(R.id.your\u textView\u id);
您正在实例化带有空构造函数的NextFragment
的新实例,因此
public class NextActivity extends AppCompatActivity {
public static final String EXTRA_BUTTON_TAG =
"com.example.elieazoury.testfragments.NextActivity";
private NextFragment nextFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
}
@Override
public void onResume() {
super.onResume();
// 3 - Call update method here because we are sure that DetailFragment is visible
nextFragment=new NextFragment();
this.updateDetailFragmentTextViewWithIntentTag();
}
private void updateDetailFragmentTextViewWithIntentTag(){ nextFragment.updateTextView();
}
}
public class NextFragment extends Fragment {
private TextView textView;
public NextFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_next, container, false);
textView = view.findViewById(R.id.texttt);
return (view);
}
public void updateTextView( ) {
textView.setText("literally anything");
}
}
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:name="com.example.elieazoury.testfragments.NextFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="260dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/fragm"/>
<FrameLayout 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"
tools:context="com.example.elieazoury.testfragments.NextFragment">
<TextView
android:layout_width="wrap_content"
android:id="@+id/texttt"
android:layout_height="wrap_content"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
nextFragment=new NextFragment();
@Override
protected void onResume() {
super.onResume();
nextFragment = (NextFragment) getSupportFragmentManager().findFragmentById(R.id.fragm);
updateDetailFragmentTextViewWithIntentTag();
}
private void updateDetailFragmentTextViewWithIntentTag(){ nextFragment.updateTextView();
}