Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ActivityForResult介于3个活动之间_Android_Android Intent_Android Activity - Fatal编程技术网

Android ActivityForResult介于3个活动之间

Android ActivityForResult介于3个活动之间,android,android-intent,android-activity,Android,Android Intent,Android Activity,我在这件事上好几个小时都在头痛。我有3个活动,活动A打开B,C必须将数据传递给活动A。 在活动A中,我运行startActivityForResult: public static final int REQ_CODE_ACT3 = 2; @Override public void onClick(View v) { Intent intent = null; intent = new Intent(A.this, B.class); startActivityForResult(int

我在这件事上好几个小时都在头痛。我有3个活动,活动A打开B,C必须将数据传递给活动A。 在活动A中,我运行startActivityForResult:

public static final int REQ_CODE_ACT3 = 2;
@Override
public void onClick(View v) {
    Intent intent = null;
intent = new Intent(A.this, B.class);
startActivityForResult(intent, REQ_CODE_ACT3);
}
然后B将数据传递给C

Intent singc = new Intent(B.this, C.class);
                Bundle extras = new Bundle();                   
                singc .putExtra("cto", d.cto);
                singc .putExtra("colore", d.colore);                        
                singc  .putExtras(extras);
                startActivity(singc );
                finish();
最后,C应该将数据传递给A。 但是数据没有通过

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

                Dettaglio d = dettagli.get(position);
                Intent intent=new Intent();
                 intent.putExtra("cto", d.cto);
                 intent.putExtra("colore", d.colore);
                 setResult(RESULT_OK,intent);
                 finish();

            }
        });
lista.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Dettaglio d=dettagli.get(位置);
意图=新意图();
意向。额外支付(“cto”,d.cto);
意向。额外(“颜色”,d.colore);
设置结果(结果正常,意图);
完成();
}
});
  • 在A中:startActivityforResult(B)

  • 在B中:startActivityForResult(C)

  • 当C完成创建结果时,调用setResult并完成活动C
  • 重写B中的onActivityResult,并从C+setResult中为A+完成活动B获取所需内容
  • 重写A中的onActivityResult以获取从B返回的结果

如果您需要一些示例代码,或者仍然有问题,请发表评论

如果B打开C,那么您需要让C将额外的内容传递给B,并在B中调用activity result将信息传递给a。