返回意图不起作用

时间:2016-01-03 13:48:22

标签: android android-intent

嘿,伙计们,我不是一个非常高级的程序员,所以我正在抓住这个奇怪的问题。尝试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);

                    }
                }
            }
    );
}

2 个答案:

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