通过setText的片段(Android版)的NullPointerException [英] Nullpointerexception with setText in a Fragment (Android)

查看:187
本文介绍了通过setText的片段(Android版)的NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用滚动标签页之间去单独片段的应用程序。每个片段只显示preSET文本。该文本将被格式化为良好的外观,虽然,所以我需要使用HTML解析器来得到它才能正常显示。我很新的Java和Android的,所以我想我的布局可能是错的但是我难倒了这一点,我希望有人可以帮助!应用程序崩溃的发射。该字符串存在于字符串文件。

这是片段:

 公共静态类AboutMeFragment扩展片段{    公共AboutMeFragment(){
    }    @覆盖    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
            捆绑savedInstanceState){
         。textviewabout =(TextView中)getActivity()findViewById(R.id.textviewabout);
         textviewabout.setText(Html.fromHtml(的getString(R.string.about_me)));
        查看rootView = inflater.inflate(R.layout.aboutme,
                集装箱,FALSE);
        返回rootView;
    }
}

这(再次,pretty知道这是不正确的)创建的TextView。

 公共类MainActivity扩展FragmentActivity { SectionsPagerAdapter mSectionsPagerAdapter; ViewPager mViewPager;
 静态的TextView textviewabout;

这是aboutme.xml

 <滚动型
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent>
    <的TextView
        机器人:ID =@ + ID / textviewabout
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_alignParentLeft =真
        机器人:layout_alignParentTop =真
        机器人:layout_marginLeft =10dp
        机器人:layout_marginTop =10dp
        机器人:滚动条=垂直
        机器人:文字=@字符串/ about_me/>
     < /滚动型>

下面是日志的猫:

  03-15 18:38:11.332:E /跟踪(30586):错误打开跟踪文件:没有这样的文件或目录(2)
03-15 18:38:11.722:W / dalvikvm(30586):主题ID = 1:螺纹未捕获的异常(组= 0x41094540)退出
03-15 18:38:11.802:E / AndroidRuntime(30586):致命异常:主要
03-15 18:38:11.802:E / AndroidRuntime(30586):显示java.lang.NullPointerException
03-15 18:38:11.802:E / AndroidRuntime(30586):在com.example.keiththomsonsicv.MainActivity $ AboutMeFragment.onCreateView(MainActivity.java:142)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.view.ViewPager.populate(ViewPager.java:914)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.View.measure(View.java:15286)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4832)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.View.measure(View.java:15286)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.View.measure(View.java:15286)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4832)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-15 18:38:11.802:E / AndroidRuntime(30586):在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2230)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.View.measure(View.java:15286)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2105)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1262)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1492)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1160)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4682)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:738)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.Choreographer.doCallbacks(Choreographer.java:564)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.Choreographer.doFrame(Choreographer.java:532)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:723)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.os.Handler.handleCallback(Handler.java:615)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.os.Handler.dispatchMessage(Handler.java:92)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.os.Looper.loop(Looper.java:155)
03-15 18:38:11.802:E / AndroidRuntime(30586):在android.app.ActivityThread.main(ActivityThread.java:5520)
03-15 18:38:11.802:E / AndroidRuntime(30586):在java.lang.reflect.Method.invokeNative(本机方法)
03-15 18:38:11.802:E / AndroidRuntime(30586):在java.lang.reflect.Method.invoke(Method.java:511)
03-15 18:38:11.802:E / AndroidRuntime(30586):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1029)
03-15 18:38:11.802:E / AndroidRuntime(30586):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
03-15 18:38:11.802:E / AndroidRuntime(30586):在dalvik.system.NativeStart.main(本机方法)

关于me.xml

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:paddingBottom会=@扪/ activity_vertical_margin
    机器人:paddingLeft =@扪/ activity_horizo​​ntal_margin
    机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
    机器人:paddingTop =@扪/ activity_vertical_margin
    工具:上下文=>中MainActivity $ AboutMeFragment。
<滚动型
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent>
    <的TextView
        机器人:ID =@ + ID / textviewabout
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_alignParentLeft =真
        机器人:layout_alignParentTop =真
        机器人:layout_marginLeft =10dp
        机器人:layout_marginTop =10dp
        机器人:滚动条=垂直
        机器人:文字=textviewabout/>
     < /滚动型>< / RelativeLayout的>


解决方案

这将是更容易,如果你从LogCat中提供堆栈跟踪发现错误,但我看到一个明显的错误:

在您的片段,你指的是活动得到TextView的,但你的 textviewabout 为确保您的片段中的一部分,所以我肯定code已成为

 公共静态类AboutMeFragment扩展片段{     公共AboutMeFragment(){
     }     @覆盖     公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
             捆绑savedInstanceState){
          查看rootView = inflater.inflate(R.layout.aboutme,
            集装箱,FALSE);
          textviewabout =(TextView中)rootView.findViewById(R.id.textviewabout);
          textviewabout.setText(Html.fromHtml(的getString(R.string.about_me)));
          返回rootView;
     }
}

编辑:
此外,在您的活动,你只显示的声明,没有code要如何展现片段。你应该添加活动的XML显示,如果该片段声明那里。

I have an app with separate fragments using scroll tabs to go between. Each fragment just displays preset text. The text is going to be formatted for good appearance though so I need to use the html parser to get it to display properly. I'm very new to Java and android so I think my layout may be wrong but Im stumped with this, i was hoping anyone could help! The app crashes on launch. The string exists in the strings file.

This is the fragment:

public static class AboutMeFragment extends Fragment {

    public AboutMeFragment() {
    }

    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
         textviewabout = (TextView)getActivity().findViewById(R.id.textviewabout);
         textviewabout.setText(Html.fromHtml(getString(R.string.about_me)));
        View rootView = inflater.inflate(R.layout.aboutme,
                container, false);
        return rootView;
    }
}

And this (again, pretty sure this is incorrect) creates the textview.

public class MainActivity extends FragmentActivity {

 SectionsPagerAdapter mSectionsPagerAdapter;

 ViewPager mViewPager;
 static TextView textviewabout;

And this is aboutme.xml

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:id="@+id/textviewabout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:scrollbars = "vertical"
        android:text="@string/about_me" />
     </ScrollView>

Here is log cat:

03-15 18:38:11.332: E/Trace(30586): error opening trace file: No such file or directory (2)
03-15 18:38:11.722: W/dalvikvm(30586): threadid=1: thread exiting with uncaught exception (group=0x41094540)
03-15 18:38:11.802: E/AndroidRuntime(30586): FATAL EXCEPTION: main
03-15 18:38:11.802: E/AndroidRuntime(30586): java.lang.NullPointerException
03-15 18:38:11.802: E/AndroidRuntime(30586):    at com.example.keiththomsonsicv.MainActivity$AboutMeFragment.onCreateView(MainActivity.java:142)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.View.measure(View.java:15286)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4832)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.View.measure(View.java:15286)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.View.measure(View.java:15286)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4832)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2230)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.View.measure(View.java:15286)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2105)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1262)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1492)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1160)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4682)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:738)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.Choreographer.doCallbacks(Choreographer.java:564)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.Choreographer.doFrame(Choreographer.java:532)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:723)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.os.Handler.handleCallback(Handler.java:615)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.os.Handler.dispatchMessage(Handler.java:92)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.os.Looper.loop(Looper.java:155)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at android.app.ActivityThread.main(ActivityThread.java:5520)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at java.lang.reflect.Method.invokeNative(Native Method)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at java.lang.reflect.Method.invoke(Method.java:511)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
03-15 18:38:11.802: E/AndroidRuntime(30586):    at dalvik.system.NativeStart.main(Native Method)

About me.xml

<RelativeLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity$AboutMeFragment" >
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:id="@+id/textviewabout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:scrollbars = "vertical"
        android:text="textviewabout" />
     </ScrollView>

</RelativeLayout>

解决方案

It would be easier to find errors if you provide the Stacktrace from LogCat, but I see one obvious error:

In your Fragment you are referring to the Activity to get the TextView, but your textviewabout is sure a part of your fragment, so I am sure the code has to be

public static class AboutMeFragment extends Fragment {

     public AboutMeFragment() {
     }

     @Override

     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
          View rootView = inflater.inflate(R.layout.aboutme,
            container, false);
          textviewabout = (TextView)rootView.findViewById(R.id.textviewabout);
          textviewabout.setText(Html.fromHtml(getString(R.string.about_me)));
          return rootView;
     }
}

Edit: Further in your activity you only show the declarations, no code how you want to show the Fragment. You should add the XML of your Activity to show if the Fragment is declared there.

这篇关于通过setText的片段(Android版)的NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆