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, 이제 그는 thread.stop()에서 java.lang.UnsupportedOperationException을 말하고 있습니다. 어떤 라인에서 – user3057253