【问题标题】:setImageDrawble outside onCreate在 onCreate 之外的 setImageDrawble
【发布时间】:2016-03-22 20:01:34
【问题描述】:

我有抽屉布局,顶部有一个 ImageView 在 DrawerFragment 类里面, 当我尝试 setImageDrawble 表单 onCreate 它工作 但是当我尝试在 onCreat 之外执行此方法时,我有( NUllPointException ) 这是 onCreate 方法

RecyclerView recyclerView ;
MyAdapter adapter;
View view ;
ImageView drawerPic ; 
private ActionBarDrawerToggle actionBarDrawerToggle ;

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

     view = inflater.inflate(R.layout.drawer_fragmnet_layout,null,false);

    recyclerView = (RecyclerView)view.findViewById(R.id.recyclerView);
    adapter = new MyAdapter(getActivity(),setItems());
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    drawerPic = (ImageView)view.findViewById(R.id.imageView);
    drawerPic.setImageResource(R.drawable.green);


    return  view ;

}

当我尝试做的时候

        drawerPic.setImageResource(R.drawable.green);

onCreat 之外(来自另一个方法) 或者当我从此类声明对象时,然后在其中执行另一种方法 setImageResource

,,我有这个错误

03-22 21:01:30.525 29538-29538/maysara.maysara_.com.materialdesignpro E/AndroidRuntime: 致命异常: main java.lang.RuntimeException:无法启动活动 ComponentInfo{maysara.maysara_.com.materialdesignpro/maysara.maysara_.com.materialdesignpro.MainActivity}:java.lang.NullPointerException 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2356) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2408) 在 android.app.ActivityThread.access$600(ActivityThread.java:167) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5405) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.NullPointerException 在 maysara.maysara_.com.materialdesignpro.DrawerFragment.setUp(DrawerFragment.java:55) 在 maysara.maysara_.com.materialdesignpro.MainActivity.onCreate(MainActivity.java:36) 在 android.app.Activity.performCreate(Activity.java:5122) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1151) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2320) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2408) 在 android.app.ActivityThread.access$600(ActivityThread.java:167) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:194) 在 android.app.ActivityThread.main(ActivityThread.java:5405) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 在 dalvik.system.NativeStart.main(本机方法)

为什么会这样?

【问题讨论】:

    标签: android


    【解决方案1】:

    here,您可以发现在创建视图之前调用了 onAttach() 和 onCreate(),如果您在这两个中调用 drawerPic方法或在 onCreateView() 之前调用的方法你会得到 NullPointerException 因为它没有被初始化。

    尝试在 onCreateView() 之后调用的方法中使用它

    【讨论】:

    • 我不能在 onCreat() 之外使用 findViewById() 的问题,我只能在 onCreate 中进行膨胀,正如你在我的代码中看到的那样
    • 1.在类级别 2 声明“私有视图 myview”。 view = inflater.inflate(R.layout.drawer_fragmnet_layout,null,false);我的视图=视图; 3. 在任何你想要的地方使用 myview.findViewById()
    • 我做了,,同样的问题出现了
    • 在其视图膨胀之前,您无法设置任何 UI 元素。
    • 当我将我膨胀为类成员的视图(查看我上面的代码)然后再次使用它时,它应该可以工作,但它没有,我在这里知道为什么这是发生了
    猜你喜欢
    • 2023-02-14
    • 1970-01-01
    • 2014-10-27
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    相关资源
    最近更新 更多