【问题标题】:Android start Activity From Fragment Crash [duplicate]Android从片段崩溃开始活动[重复]
【发布时间】:2017-09-08 08:59:49
【问题描述】:

我正在尝试此代码通过添加此代码从片段启动活动,但应用程序在此处崩溃

Intent i = new Intent(getActivity(), IsActive.class);
startActivity(i);
getActivity().finish();

这是我的错误日志:

FATAL EXCEPTION: main                                                                        Process: media.aer.influencer, PID: 16165
  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
  at android.content.ComponentName.<init>(ComponentName.java:128)
  at android.content.Intent.<init>(Intent.java:4459)
  at media.aer.influencer.Activity.MarkAsActiveFragment$10.onResponse(MarkAsActiveFragment.java:396)
  at media.aer.influencer.Activity.MarkAsActiveFragment$10.onResponse(MarkAsActiveFragment.java:333)
  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:67)
  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
  at android.os.Handler.handleCallback(Handler.java:746)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5443)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

我做错了什么??

【问题讨论】:

标签: android android-fragments android-intent nullpointerexception android-volley


【解决方案1】:

每当您处理片段时,您都应该使用 getContext() 来获取 Activity。

    Intent intent=new Intent(getContext(), IsActive.class);
    startActivity(intent);
    getActivity().finish();

【讨论】:

  • getActivity().finish() 呢?
  • 在某些情况下 getActivity() 将返回 null 或在这种情况下给出错误避免调用 finish()
【解决方案2】:

而不是getActivity()

使用YourActivityName.getActivity();

在这两个地方

喜欢

private HomeActivity csActivity;
csActivity = (HomeActivity) getActivity();

所以你可以使用csActivity 而不是getActivity()

【讨论】:

  • 存储活动引用有什么帮助?这只会导致内存泄漏
  • 尝试使用getContext()
  • 你在猜吗?
  • getContext() 我猜
  • 声明你的意图 i = new Intent(getActivity(), IsActive.class);开始活动(一); getActivity().finish();在主要活动类中并从您的 fagemets 中调用函数酷
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多