-1

リマインダー ノートの ListView を作成しようとしていました。しかし、それを保存して ListView に表示しようとすると、このエラー/例外でアプリがクラッシュします。saveNote保存ボタンを押すとメソッドが呼び出されます。どんな助けでも大歓迎です。

    public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();
    switch(id) {
      case R.id.add_reminder : {
          et = (EditText)findViewById(R.id.new_note);
          et.setVisibility(View.VISIBLE);
          note = et.getText().toString();
          i++;
          Button save_button = (Button) findViewById(R.id.button_save);
          save_button.setVisibility(View.VISIBLE);
      }
      default : return super.onOptionsItemSelected(item);
  }

}
public void saveNote(View view) {

    String[] notes = new String[20];
    notes[i] = note;
    listView = (ListView) findViewById(R.id.list);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,notes);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            //Clicked item index
            int itemPosition = position;
            //Clicked item value
            String itemNote = (String) listView.getItemAtPosition(position);
            //Alert
            Toast.makeText(getApplicationContext(), "Position :" + itemPosition + "  ListItem : " + itemNote, Toast.LENGTH_LONG).show();
        }
    });

ログキャット

java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:4020)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4015)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
            at com.cokosofts.pramith.reminder.MainActivity.saveNote(MainActivity.java:69)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at android.view.View$1.onClick(View.java:4015)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
4

3 に答える 3

1

ログから見つけた主な原因は、ListView が null であることです。listView が空かどうかもう一度確認してください。また、何notes[i] = note ですか?? 保存ボタンをクリックするたびに、ListViewと設定アダプターが毎回見つかると思います。これは私の観点からは良いアプローチではありません。最初にアダプタを設定し、次回はアダプタ データを更新して notifyDataSetChanged(); を呼び出す必要があります。

于 2015-09-15T07:06:41.513 に答える
0

レイアウトで ListView が見つからなかった (null だった) 理由をデバッグして調べます。

于 2015-09-15T06:57:33.810 に答える
0

問題は次の行にあります。

listView = (ListView) findViewById(R.id.list);

xml に ID が の ListView ウィジェットがあるかどうかを確認してください'list'。XML で id が異なる場合、NULL オブジェクト参照になります。電話すると

listView.setAdapter(adapter)

NULL ポインター例外が発生します。

于 2015-09-15T07:03:18.420 に答える