从儿童活动的创造访问父亲活动时的应用程序冲突

时间:2017-05-12 06:17:50

标签: android android-activity

从儿童活动的创建访问父活动时,应用程序崩溃。尝试的代码如下

public class TestActivity extends AppCompatActivity implements SDCard.SDCardInterface {
   @Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ((SDCard)getParent()).setSDCardInterface(this);
   }

   @Override
   public void Show(String show){
    Toast.makeText(this, "TestAcivity OK "+show, Toast.LENGTH_LONG).show();
   }
}

我从mainactivity调用了以下的儿童活动

    Intent intent = new Intent();
    intent.setClass(this, TestActivity.class);
    startActivity(intent);

错误记录如下

    FATAL EXCEPTION: main
    Process: com.mtxlabs.cameraviewer, PID: 9566
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mtxlabs.cameraviewer/com.mtxlabs.cameraviewer.sdcard.TestActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
        at android.app.ActivityThread.access$900(ActivityThread.java:175)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5602)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
        at com.mtxlabs.cameraviewer.sdcard.TestActivity.onCreate(TestActivity.java:16)
        at android.app.Activity.performCreate(Activity.java:5451)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471) 
        at android.app.ActivityThread.access$900(ActivityThread.java:175) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:146) 
        at android.app.ActivityThread.main(ActivityThread.java:5602) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
        at dalvik.system.NativeStart.main(Native Method) 

1 个答案:

答案 0 :(得分:0)

原因在于这一行

((SDCard)getParent()).setSDCardInterface(this);

您致电getParent(),将返回Activity。但是,您将其投射到SDCard =>它会抛出NullPointerException。