0

ボタンをクリックして TextView、Button、および LinearLayout を削除すると、アプリがクラッシュします。これがlogcatレポートです。118行目でremoveViewをしたいときにすぐにクラッシュします:

        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 void です

    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);

}

誰か助けて!

4

2 に答える 2

3

関数の外でfindviewbyiDであるすべてのレイアウトとテキストビューを初期化してみてください。グローバルに実行してください。同じことを行った後に機能する可能性があると思います。oncreateで初期化すると、問題が解決する場合があります。

于 2012-05-19T03:31:24.997 に答える
1

ビュー ID を台無しにして、実際には存在しないものを見つけようとしている可能性があります。プログラムで ID を割り当てる代わりに、代わりにタグを設定してfindViewByTag.

于 2012-05-19T02:47:32.140 に答える