0

onClickListener から startActivityForResultを呼び出すときに問題が発生しました。

最初のアクティビティでは、開始する方法が 2 つありますstartActivityForResult

  1. ListView-からOnItemClick()呼び出すと、問題なく動作しますstartActivityForResultListView OnItemClick()

  2. ButtonOnClickListener()-しかし、2番目のアクティビティからstartActivityForResultを呼び出すと、何らかの理由でButton OnClickListener()開始OnActivityResultされません。ここに私のコードがあります:

*更新:お時間をいただきありがとうございます。あなたが提供したものは、私がすでに試した変更の1つですが、新しいコードと同じままです:

StartActivityForResult() を使用した最初の呼び出し (正常に動作します! - OnCreate() 内):

listView.setOnItemClickListener(new OnItemClickListener() 
    {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id)
        {
            Intent intent = new Intent(NoteNames.this, EditNote.class);
            intent.putExtra("subject", noteList.get(position).getSubjectText());
            intent.putExtra("body", noteList.get(position).getBodyText());
            startActivityForResult(intent, position);
        }


    });

2 番目の呼び出し: OnActivityResult() を開始しません:

@Override
public void onClick(View v) {

    if(v.getId() == addButton.getId()){
        Intent intent = new Intent(NoteNames.this, EditNote.class);
        intent.putExtra("subject", "");
        intent.putExtra("body", "");
        startActivityForResult(intent, idOfNew);
    }

}

これは SecondActivity です。

private EditText subjectEditText, bodyEditText;
private Button approve, decline;

@Override
protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_edit_note);

    subjectEditText = (EditText) findViewById(R.id.note_head);
    bodyEditText = (EditText) findViewById(R.id.note_text);
    approve = (Button) findViewById(R.id.approve_button);
    decline = (Button) findViewById(R.id.decline_button);

    Intent intent = getIntent();
    String subject = intent.getExtras().getString("subject");
    String body = intent.getExtras().getString("body");

    subjectEditText.setText(subject);
    bodyEditText.setText(body);

    Handler handler = new Handler();
    approve.setOnClickListener(handler);
    decline.setOnClickListener(handler);

    super.onCreate(savedInstanceState);
}

class Handler implements OnClickListener{

    @Override
    public void onClick(View v) {



         if (v.getId()==approve.getId()){
             Intent intent = getIntent();
             intent.putExtra("subject", String.valueOf(subjectEditText.getText()));
             intent.putExtra("body", String.valueOf(bodyEditText.getText()));
             setResult(RESULT_OK, intent);
             finish();
         }

    }

}

}

4

1 に答える 1

0

編集:質問を編集する前に、コードにfinal int idOfNew=-5. まあ、requestCode<0それならonActivityResultはトリガーされません。リクエスト コード>0(おそらくボタンの ID) を使用すると、問題が解決するはずです。コード内の他のすべては問題ありません。

于 2013-01-22T15:13:33.347 に答える