Activity A
调用Activity B
,以便它可以向SQL Database
添加一些数据并退回到Activity A
。返回Button
的{{1}}上的问题Activity B
已损坏,甚至不会输出任何Android监视器日志。
活动A使用以下方式调用B:
Activity A
这是什么活动B的返回函数看起来像是在onCreate函数中调用的:
private void btnFunc (){
Button btnAddSubject = (Button) findViewById(R.id.btn_new_subject);
btnAddSubject.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(v.getContext(), AddSubject.class);
startActivityForResult(myIntent,1);
}
});
}
onCreate还包括:
public void Continue(){
//SQL Instances
subject = new SQLSubject(this);
mContinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = subject.insertData(add_subject.getText().toString(),
add_subject_group.getText().toString(),
add_teacher.getText().toString());
if (isInserted == true) {
Toast.makeText(AddSubject.this, "Saved", Toast.LENGTH_LONG).show();
returnIntent = new Intent(v.getContext(), MainActivity.class);
setResult(1);
startActivity(returnIntent);
}else {
Toast.makeText(AddSubject.this, "Error saving data", Toast.LENGTH_LONG).show();
returnIntent = new Intent(v.getContext(), MainActivity.class);
setResult(0);
startActivity(returnIntent);
}
}
}
);
}
答案 0 :(得分:1)
您没有返回Intent,您正在重新启动其他活动(并且不对returnIntent
执行任何操作)。
您应该在结果中设置意图并完成当前活动。
例如
setResult(1, returnIntent);
finish();
然后,onActivityResult
的代码将在startActivityForResult
的活动中调用。
答案 1 :(得分:0)
而不是
setResult(1);
和setResult(0);
称之为:
setResult(Activity.RESULT_OK,returnIntent); //instead of setResult(1);
和
setResult(Activity.RESULT_CANCELED, returnIntent); //instead of setResult(0);