从onClickListener 调用 startActivityForResult时遇到一些问题。
在第一项活动中,我有2种方法可以启动startActivityForResult
ListView
OnItemClick()
- 当我从startActivityForResult
调用ListView OnItemClick()
时,它正常工作
Button
与OnClickListener()
- 但是当我从Button OnClickListener()
调用startActivityForResult时,第二个活动将从某个reasone开始OnActivityResult
。
这是我的代码:
*更新: 谢谢你的时间,你提供的是我已经尝试过的变化之一,但是它与我的新代码保持一致:
首先使用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);
}
});
第二个电话:不会启动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();
}
}
}
}
答案 0 :(得分:0)
编辑:在编辑问题之前,代码中写有final int idOfNew=-5
。好吧,如果requestCode<0
然后onActivityResult
不被触发。使用请求代码>0
(可能是按钮的ID),这应该可以解决您的问题。你代码中的其他所有内容都很好。