2012-05-19 2 views
0

버튼을 클릭하여 TextView, Button 및 LinearLayout을 삭제하면 응용 프로그램이 충돌합니다. 다음은 logcat 보고서입니다. 여기안드로이드 디버그 - TextView, Button 및 Layout 삭제시 오류 발생

 tasklayout.removeView(taskbutton); 

05-19 14:35:58.222: E/AndroidRuntime(632): java.lang.NullPointerException 
05-19 14:35:58.222: E/AndroidRuntime(632): at com.com.com.addtask.deltask(addtask.java:118) 
05-19 14:35:58.222: E/AndroidRuntime(632): at com.com.com.addtask$2.onClick(addtask.java:65) 
05-19 14:35:58.222: E/AndroidRuntime(632): at android.view.View.performClick(View.java:3511) 
05-19 14:35:58.222: E/AndroidRuntime(632): at android.view.View$PerformClick.run(View.java:14105) 
05-19 14:35:58.222: E/AndroidRuntime(632): at android.os.Handler.handleCallback(Handler.java:605) 

을 onClickListner 및 무효 deltask이

Button delt = (Button) findViewById(R.id.btndelete1); 
    delt.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      deltask(v); 
     } 
    }); 

public void deltask(View v) { 

    SharedPreferences datatask; 
    datatask = getSharedPreferences(filename, 0); 
    int tnum = datatask.getInt("tasknumber", 1); 
    int layoutnum = 1000 + tnum; 
    int textviewnum = 1100 + tnum; 
    int buttonviewnum = 1200 + tnum; 

    LinearLayout layout = (LinearLayout) findViewById(R.id.taskll); 
    LinearLayout tasklayout = (LinearLayout) findViewById(layoutnum); 
    TextView tasktv = (TextView) findViewById(textviewnum); 
    Button taskbutton = (Button) findViewById(buttonviewnum); 

    tasklayout.removeView(taskbutton); 
    tasklayout.removeView(tasktv); 
    layout.removeView(tasklayout); 

} 

사람 도움이다 : 그것은 내가 라인 (118)에 removeView하고자 할 때 마우스 오른쪽 충돌!

+0

라인 # 118은 무엇입니까? –

답변

1

실제로보기 id를 엉망으로 만들고 거기에 실제로없는 것을 찾으려고합니다. 프로그래밍 방식으로 ID를 할당하는 대신 태그를 설정하고 findViewByTag을 사용하는 것이 가장 좋습니다.

+0

감사하지만 불행히도 여전히 작동하지 않습니다 :/당신이 다른 아이디어가 있다면 나는 그 (것)들을 듣고 싶습니다! – Nick

+0

@Nicholas : Not really ... 오류가 분명합니다. 'tasklayout'은 발견되지 않았기 때문에'null '입니다. ID가없는보기가 없습니다. –

+0

괜찮아요 계속 노력하고 있습니다. 고마워요! – Nick

3

모든 레이아웃과 텍스쳐 뷰를 함수 외부에있는 findviewbyiD로 초기화하십시오. 전역 적으로 동일한 작업을 수행 한 후에도 작동한다고 생각합니다. oncreate에서 초기화하면 문제가 해결 될 수 있습니다.

관련 문제