-4

Извините, если это тривиальная проблема, но я не могу ее решить. Я работаю над полным приложением, но я упростил проблему:Null Pointer Exception, начинающееся с другой деятельности

У меня есть три действия (уже объявлено в манифесте), и я пытаюсь запустить его с помощью «чужого» метода.

Activity1:

public void goNextActivity(View view){ 
    Activity2 obj = new Activity2(); 
    obj.jumpToThree(this);//I've already tried with getApplicationConext(), didn't work 
} 

деятельности2:

public void jumpToThree(Context context){ 
    startActivity(new Intent(context, Activity3.class)); 
} 

Activity3:

//empty standard activity that works normally 

Это бревно

FATAL EXCEPTION: main 
    Process: com.example.user.myapp, PID: 32408 
    java.lang.IllegalStateException: Could not execute method for android:onClick 
     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:278) 
     at android.view.View.performClick(View.java:5201) 
     at android.view.View$PerformClick.run(View.java:21163) 
     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) 
    Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invoke(Native Method) 
     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273) 
     at android.view.View.performClick(View.java:5201)  
     at android.view.View$PerformClick.run(View.java:21163)  
     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)  
    ****Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference 
     at android.app.Activity.startActivityForResult(Activity.java:3922)**** 
     at android.app.Activity.startActivityForResult(Activity.java:3881) 
     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:784) 
     at android.app.Activity.startActivity(Activity.java:4208) 
     at android.app.Activity.startActivity(Activity.java:4176) 
     ****at com.example.user.myapp.folder.Activity2.jumpToThree(Activity2.java:91)**** 
     ****at com.example.user.myapp.MainActivity.goNextActivity(MainActivity.java:26)**** 
     at java.lang.reflect.Method.invoke(Native Method)  
     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)  
     at android.view.View.performClick(View.java:5201)  
     at android.view.View$PerformClick.run(View.java:21163)  
     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) 
+2

То, что вы пытаетесь сделать, абсолютно не имеет смысла. Если вы работаете в Activity1, почему бы не начать Intent непосредственно из Activity1 в Activity 2? – RafaelC

+0

Я работаю над большим и сложным приложением, и решение проблемы в этом упрощенном примере поможет мне @RafaelCardoso – user3891850

+0

Это все еще бессмысленно, потому что строка 'startActivity (новый Intent (context, Activity3.class));' заканчивается «startActivity (новый Intent (Activity1.this, Activity3.class));'. Нет смысла называть эту «startActivity» на «Activity2»! – RafaelC

ответ

0

Несмотря на то, что вы создали экземпляр объекта Activity2, ни один из его методов жизненного цикла активности не был вызван, и ни одна из работ по созданию экземпляров суперкласса, обычно выполняемых в onCreate, не была выполнена.

void onCreate (Bundle savedInstanceState) 
{ 
     // Derived classes must call through to the super class's implementation of this method. 
     super(savedInstanceState); 
} 

Так ActivityThread просто нуль и, следовательно, исключение

Попытка вызвать виртуальный метод 'android.app.ActivityThread $ ApplicationThread android.app.ActivityThread.getApplicationThread()' на нулевой объект ссылка

1

Вы абсолютно положительно не могу это сделать:

Activity2 obj = new Activity2(); 

Только Android структура может инстанцирует Android компоненты (Activity, Service, BroadcastReceiver , Provider ). If you instantiate an Android component using the new` ключевого слова, компонент не инициализирован, не имеет его контекст установлен, и будет в значительной степени не в состоянии сделать что-нибудь полезное ,