活动无法启动片段并且无法显示与此相关的布局。(activity unable to start Fragment and unable to show layout related to this.

系统教程 行业动态 更新时间:2024-06-14 17:02:17
活动无法启动片段并且无法显示与此相关的布局。(activity unable to start Fragment and unable to show layout related to this. ending with null pointer)

我正在关注书籍示例,但以下代码无法启动CrimeFragment()片段。 屏幕上没有任何内容。 Activity代码如下:

CrimeActivity.java

package com.example.simerpreetjassal.criminalintent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; public class CrimeActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_crime); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.framgment_container); if(fragment==null) { fragment = new CrimeFragment(); (fm.beginTransaction().add(R.id.framgment_container, fragment)).commit(); } } }

上层活动的布局。 文件名是content_crime。

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/framgment_container" android:layout_height="match_parent" android:layout_width="match_parent" />

片段代码如下。 它无法显示与此相关的布局并在edittext(mTittleField)上获取空指针异常。 如何修复mTittleField以摆脱空指针异常。

CrimeFragment.java

package com.example.simerpreetjassal.criminalintent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; public class CrimeFragment extends Fragment { private Crime mCrime; private EditText mTittleField; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCrime = new Crime(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_crime, container, false); mTittleField = (EditText) v.findViewById((R.id.crime_title)); mTittleField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } }); return v; } }

与此相关的布局。 文件名是crime_fragment。

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/crime_title_hint" android:id="@+id/crime_title" /> </LinearLayout>

logcat的

07-28 11:27:09.056 3083-3083/com.example.simerpreetjassal.criminalintent W/System: ClassLoader referenced unknown path: /data/app/com.example.simerpreetjassal.criminalintent-1/lib/x86 07-28 11:27:09.187 3083-3083/com.example.simerpreetjassal.criminalintent W/System: ClassLoader referenced unknown path: /data/app/com.example.simerpreetjassal.criminalintent-1/lib/x86 07-28 11:27:09.309 3083-3083/com.example.simerpreetjassal.criminalintent D/AndroidRuntime: Shutting down VM 07-28 11:27:09.310 3083-3083/com.example.simerpreetjassal.criminalintent E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.simerpreetjassal.criminalintent, PID: 3083 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.simerpreetjassal.criminalintent/com.example.simerpreetjassal.criminalintent.CrimeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference at com.example.simerpreetjassal.criminalintent.CrimeFragment.onCreateView(CrimeFragment.java:26) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) at android.app.Activity.performStart(Activity.java:6253) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 07-28 11:27:10.147 3083-3089/com.example.simerpreetjassal.criminalintent W/art: Suspending all threads took: 7.535ms

I am following a book example but the following code is unable to start theCrimeFragment() fragment. Nothing appear on screen. Activity code is the following:

CrimeActivity.java

package com.example.simerpreetjassal.criminalintent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; public class CrimeActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_crime); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.framgment_container); if(fragment==null) { fragment = new CrimeFragment(); (fm.beginTransaction().add(R.id.framgment_container, fragment)).commit(); } } }

Layout for upper activity. The file name is content_crime.

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/framgment_container" android:layout_height="match_parent" android:layout_width="match_parent" />

Fragment code is the following. It is unable to show layout related to this and getting a null pointer exception on the edittext (mTittleField). How can I fix the mTittleField to get rid of the null pointer exception.

CrimeFragment.java

package com.example.simerpreetjassal.criminalintent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; public class CrimeFragment extends Fragment { private Crime mCrime; private EditText mTittleField; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCrime = new Crime(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_crime, container, false); mTittleField = (EditText) v.findViewById((R.id.crime_title)); mTittleField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } }); return v; } }

Layout related to this. File name is crime_fragment.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/crime_title_hint" android:id="@+id/crime_title" /> </LinearLayout>

Logcat

07-28 11:27:09.056 3083-3083/com.example.simerpreetjassal.criminalintent W/System: ClassLoader referenced unknown path: /data/app/com.example.simerpreetjassal.criminalintent-1/lib/x86 07-28 11:27:09.187 3083-3083/com.example.simerpreetjassal.criminalintent W/System: ClassLoader referenced unknown path: /data/app/com.example.simerpreetjassal.criminalintent-1/lib/x86 07-28 11:27:09.309 3083-3083/com.example.simerpreetjassal.criminalintent D/AndroidRuntime: Shutting down VM 07-28 11:27:09.310 3083-3083/com.example.simerpreetjassal.criminalintent E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.simerpreetjassal.criminalintent, PID: 3083 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.simerpreetjassal.criminalintent/com.example.simerpreetjassal.criminalintent.CrimeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference at com.example.simerpreetjassal.criminalintent.CrimeFragment.onCreateView(CrimeFragment.java:26) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) at android.app.Activity.performStart(Activity.java:6253) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 07-28 11:27:10.147 3083-3089/com.example.simerpreetjassal.criminalintent W/art: Suspending all threads took: 7.535ms

最满意答案

xml布局文件的名称与您在片段的onCreateView()中引用的名称不同。

您的片段布局xml文件是crime_fragment.xml ,您从Java代码引用的布局是fragment_crime.xml (通过R类)。

对于您的Activity ,它在布局xml文件时指的是错误的布局R.layout.activity_crime是content_crime.xml

用以下代码替换Activity的onCreate()方法的setContentView()行:

setContentView(R.layout.content_crime);

The name of the xml layout file is not the same you are referring to in the onCreateView() of your fragment.

Your fragment layout xml file is crime_fragment.xml and the layout you are referring to from your Java code is fragment_crime.xml (through the R class).

Same for your Activity, it refers to a wrong layout R.layout.activity_crime when you layout xml file is content_crime.xml

Replace the setContentView() line of your Activity's onCreate() method with this:

setContentView(R.layout.content_crime);

更多推荐

android,java,com,app,example,电脑培训,计算机培训,IT培训"/> <meta name="

本文发布于:2023-04-21 18:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/dzcp/088667f5a0ece32352bb029eb0f58cc4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:与此   片段   布局   无法启动   unable

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!