2016-04-14 41 views
0

Niçin olduğunu anlayamadığım bir sorunum var.Tekton Metodu OnResum'da Hata Verir (Android)

Ben bir fragman var ve fragmanda ben aşağıda özgeçmiş yöntemi vardır:

@Override 
public void onResume(){ 
    super.onResume(); 

    System.out.println("number 1"); 

    int s = ((StarterApplication) this.getActivity().getApplication()).getRefreshNotificationVar(); 

    System.out.println("number 2"); 
    s = s + 1; 

    System.out.println("number 3"); 
    ((StarterApplication) this.getActivity().getApplication()).setRefreshNotificationVar(s); 

    System.out.println("number 4"); 
    System.out.println(s); 


} 

Ve singletons aşağıdaki gibidir:

private int refreshNotificationVar; 

public int getRefreshNotificationVar() { 

    System.out.println("check out here"); 
    return refreshNotificationVar; 
} 

public void setRefreshNotificationVar(int refreshNotificationVar) { 
    this.refreshNotificationVar = refreshNotificationVar; 
    System.out.println(refreshNotificationVar+" is my number"); 

} 

Ve bir kez bu parçayı diyoruz Aşağıdaki gibi faaliyetin yarattığı, iyi çalışıyor. Singleton yöntemleri ve başkaları. Aşağıdaki gibi bir düğme ile bu parçacığı yeniden adlandırıyorum. Ancak burada, singleton yöntemi başladığında hatayı almaya başladım.

E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.IllegalStateException: Could not execute method for android:onClick 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
    at android.view.View.performClick(View.java:3511) 
    at android.view.View$PerformClick.run(View.java:14105) 
    at android.os.Handler.handleCallback(Handler.java:605) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4424) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:3511) 
    at android.view.View$PerformClick.run(View.java:14105) 
    at android.os.Handler.handleCallback(Handler.java:605) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4424) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at com.my_last.mylast.newsFeedFragment.onResume(newsFeedFragment.java:223) 
    at com.my_last.mylast.MainActivity.go_to_main_view(MainActivity.java:565) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:3511) 
    at android.view.View$PerformClick.run(View.java:14105) 
    at android.os.Handler.handleCallback(Handler.java:605) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4424) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 

yapar:

newsFeedFragment fragment = new newsFeedFragment(); 
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.hide(getSupportFragmentManager().findFragmentById(R.id.fragment_container)); 
fragmentTransaction.hide(getSupportFragmentManager().findFragmentByTag("notifications_fragment")); 
fragmentTransaction.show(getSupportFragmentManager().findFragmentByTag("news_feed_fragment")); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 
fragment.onResume(); 

ilk defa parçası yükleri, iyi çalışıyor, ama fragman göstermek ve elle onResume yöntemini başlattığınızda, ben aşağıda hatayı almaya başlar

Bunun hakkında herhangi bir fikri olan var mı?

+0

Haberlerde neler varFeedFragment.java on line 223? Bu satırda NullPointerException var –

+0

'this.getActivity()' null' döndürüyor mu? – tianyu

+0

Evet, satır 'int s = ((StarterApplication) this.getActivity(). GetApplication()) getRefreshNotificationVar();' – saner

cevap

1
@Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     System.out.println("number 1"); 
     int s = ((MainApplication) this.getActivity().getApplication()).getRefreshNotificationVar(); 
     System.out.println("number 2"); 
     s = s + 1; 
     System.out.println("number 3"); 
     ((MainApplication) this.getActivity().getApplication()).setRefreshNotificationVar(s); 
     System.out.println("number 4"); 
     System.out.println(s); 
    } 

Olay Örneği Görünüyor null. Onresume yerine, aynı işlemi OnActivityCreated Metodu üzerinde yapın. Lütfen yukarıdaki kodu dikkate alın.

+0

Merhaba Naveen, onResume'yi parçayı gösterirken etkinlikten çağırdığım için başka bir yol yok, tüm parçayı en baştan yükleyeceğinden onCreate yöntemini çağırmak istemiyorum. Neden bu özgeçmişte hata alıyorum? Parça ilk kez yüklendiğinde herhangi bir hata vermemektedir. OnResume yöntemi, parça oluşturma işlemi sırasında başarılı bir şekilde işlenir, ancak ondan sonra bir hata ararken hata mesajı alır. – saner