首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointerException - FrameLayout

NullPointerException - FrameLayout
EN

Stack Overflow用户
提问于 2014-11-10 15:44:01
回答 2查看 459关注 0票数 1

在加载片段活动时,意外地收到了一个空指针异常错误。我指的是FrameLayout将用户引导到另一个活动(按一下按钮)。

代码语言:javascript
复制
11-10 07:31:58.773: E/AndroidRuntime(10340): FATAL EXCEPTION: main
    11-10 07:31:58.773: E/AndroidRuntime(10340): java.lang.NullPointerException
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at com.dooba.beta.ThirdFragment.onCreateView(ThirdFragment.java:22)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.os.Handler.handleCallback(Handler.java:615)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.os.Handler.dispatchMessage(Handler.java:92)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.os.Looper.loop(Looper.java:137)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at android.app.ActivityThread.main(ActivityThread.java:4745)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at java.lang.reflect.Method.invokeNative(Native Method)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at java.lang.reflect.Method.invoke(Method.java:511)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    11-10 07:31:58.773: E/AndroidRuntime(10340):    at dalvik.system.NativeStart.main(Native Method)

以下是活动代码:

代码语言:javascript
复制
public class ThirdFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.activity_city, container, false);

        FrameLayout icity = (FrameLayout)getView().findViewById(R.id.flCityBac);
        icity.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
            }
        });

        return rootView;


    }


}

下面是布局代码:

代码语言:javascript
复制
<RelativeLayout 
    android:id="@+id/layout_gridview_item"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:alpha="1"
    android:gravity="top"
    android:background="#DEDEDE" >

        <RelativeLayout
          android:id="@+id/background"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:background="@drawable/background_with_shadow"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="20dp"
                    android:layout_below="@+id/ttitle"

          android:padding="5dp"
         android:alpha="0.9"
          android:orientation="vertical"
          >



       <FrameLayout
            android:id="@+id/flCityBac"
        android:layout_width="wrap_content"
        android:layout_height="175dp"
        android:layout_gravity="center_horizontal"
        android:layout_weight="30" >

      <ImageView
          android:id="@+id/img_cityBac"
          android:layout_width="300dp"
          android:layout_height="175dp"
          android:alpha="1"
          android:background="@drawable/vancouvero2"
          android:contentDescription="@null"
          android:paddingLeft="0dp"
          android:paddingRight="4dp"
           />

      <TextView
              android:id="@+id/text_Title"
              android:layout_width="300dp"
              android:layout_height="40dp"

              android:layout_gravity="bottom"

              android:padding="0dp"

              android:ellipsize="marquee"
              android:gravity="center"
                                           android:background="#E41B17"
              android:alpha="0.85"
              android:maxLines="1"
              android:text="Vancouver, Canada"
              android:textAllCaps="true"
              android:textColor="#ffffff"
              android:textSize="18sp"
              android:textStyle="bold"
              android:typeface="serif" />



              </FrameLayout>

       </RelativeLayout>

        <TextView
            android:id="@+id/ttitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="32dp"
            android:alpha="0.85"
            android:ellipsize="marquee"
            android:gravity="center"
            android:maxLines="1"
            android:text="Discover"
            android:textAllCaps="true"
            android:textColor="#E41B17"
            android:textSize="28sp"
            android:textStyle="bold"
            android:typeface="serif" />

</RelativeLayout>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-10 15:54:20

而不是

代码语言:javascript
复制
getView().findViewById(R.id.flCityBac);

使用:

代码语言:javascript
复制
rootView.findViewById(R.id.flCityBac);

您不能使用getView,因为您的视图尚未创建。

希望它对你有帮助!

票数 2
EN

Stack Overflow用户

发布于 2014-11-10 15:55:51

代码语言:javascript
复制
public class ThirdFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.activity_city, container, false);

        FrameLayout icity = (FrameLayout)rootView.findViewById(R.id.flCityBac);//Use rootView here.
        icity.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
            }
        });

        return rootView;


    }


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26847457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档