Wiem, że istnieje wiele różnych przyczyn NPE
ale mój jest nieco dziwne (przynajmniej dla mnie).NullPointerException na getActivity(). RunOnUiThread (nowa Runnable() {
Więc ja konwertowane mój Activities
do Fragments
pomyślnie , ale mój problem wydaje się pochodzić z funkcji, która wyświetla datę.Jeżeli aplikacja jest uruchomiona, wszystko działa dobrze.Ale jak tylko wciśniesz przycisk Wstecz Aplikacja działa, a następnie w dzienniku mówi " Otrzymałem NullPointerException
w linii 102. Więc patrząc na kod, zrobiłem badania na ten temat, ale niestety nic nie dostałem
To jest linia, w której błąd i s pochodzący z naciśnięcia przycisku Wstecz.
getActivity().runOnUiThread(new Runnable(){
Próbowałem również wyłączenie przycisku Wstecz (ponieważ buduję program uruchamiający i nie jest potrzebny). Ale wydaje się, że nie działa.
Oto kod dla całej daty wyświetlającej metodę/funkcję.
// (Calendar) Date function - Displays dateview on Card
final boolean keepRunning1 = true;
Thread thread_two = new Thread(){
@Override
public void run(){
while(keepRunning1){
// Make the thread wait half a second. If you want...
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable(){
@Override
public void run(){
TextView date = (TextView) getView().findViewById(R.id.date);
date.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
}
});
}
}
};
thread_two.start();
Dziękuję za poświęcony czas, miejmy nadzieję, że możesz rzucić trochę światła na to, co robię źle.
Logcat -
05-23 21:17:33.216: E/AndroidRuntime(6906): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.runOnUiThread(java.lang.Runnable)' on a null object reference
05-23 21:17:33.216: E/AndroidRuntime(6906): at com.activelauncher.fragments.UtilsFragment$2.run(UtilsFragment.java:102)
Możliwe, że "Czynność" jest zamykana po kliknięciu przycisku Wstecz, a zatem otrzymujesz 'getActivity()' jako wartość null – Apoorv
@Apoorv, w jaki sposób mogę powstrzymać działanie przed kliknięciem przycisku zamknięcia? – Robin