Я пытаюсь закодировать таймер для Android, но у меня возникают проблемы с обработчиком. Эта строка:Почему этот код бросает исключение NullPointerException?
handler.post(new Runnable(){
... вызывает исключение NullPointerException. Зачем?
public class HomeFragment extends Fragment {
private int stunde,minute,sekunde;
private TextView textfield;
private Button buttonStart,buttonStop;
private Handler handler;
private boolean Running = true;
private Runnable runnable;
private Thread thread;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
buttonStart =(Button) rootView.findViewById(R.id.button1);
buttonStop = (Button) rootView.findViewById(R.id.button2);
buttonStop.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
thread.stop();
}
});
textfield = (TextView) rootView.findViewById(R.id.startZeit);
buttonStart.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Running = true;
runnable = new Runnable(){
@Override
public void run() {
while(Running){
try{
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
handler.post(new Runnable(){
@Override
public void run(){
sekunde+=1;
if(sekunde == 60){
minute +=1;
sekunde = 0;
}if(minute == 60){
stunde +=1;
}
textfield.setText(String.format("%02d",stunde)+" : "+String.format("%02d", minute)+" : "+String.format("%02d",sekunde));
}
});
}
}
};
thread = new Thread(runnable);
thread.start();
handler = new Handler();
}
});
return rootView;
}
}`
Я сделал это, под "thread.start();" -Я скажу, где именно мне нужно его инициализировать? – user3057253
Просто переместите эту строку: handler = new Handler(); в другое место. Сделайте это прямо в начале onCreateView. Или еще лучше поместить его в метод onCreate. –
Спасибо Emil, теперь он говорит мне java.lang.UnsupportedOperationException в thread.stop(); – user3057253