Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
Java Android从非活动类向活动传递参数_Java_Android - Fatal编程技术网

Java Android从非活动类向活动传递参数

Java Android从非活动类向活动传递参数,java,android,Java,Android,我有这个问题 我的活动(CartActivity)启动另一个活动(FindItemActivity) 在FindItemActivity中,有一个ExpandableListView(由自定义ExpandableListAdapter生成),带有按钮(AddItem)和自定义ActionListener(OnclickListener) 我想将参数从actionListener传递到第一个活动(CartActivity) 以下是我现在拥有的内容(在我的点击式侦听器中): 但是,每次按下按钮,应用

我有这个问题

我的活动(CartActivity)启动另一个活动(FindItemActivity)

在FindItemActivity中,有一个ExpandableListView(由自定义ExpandableListAdapter生成),带有按钮(AddItem)和自定义ActionListener(OnclickListener)

我想将参数从actionListener传递到第一个活动(CartActivity)

以下是我现在拥有的内容(在我的点击式侦听器中):

但是,每次按下按钮,应用程序都会启动新的活动,而不是已经在运行的旧活动。。。我需要原始活动中存储的数据,所以我必须恢复它,而不是开始新的活动。。。 编译器告诉我,当从非活动类启动活动时,必须执行FLAG_ACTIVITY_NEW_任务

是否有其他标志可用于恢复活动而不是启动新的活动


或者我可以关闭活动FindItemActivity吗?我尝试了finish(),但找不到在非活动类中使用它的方法…

如果我理解正确,您只需要启动另一个活动来选择某些内容,然后返回到第一个活动

如果我是对的,您必须在第一个活动中调用
startActivityForResult
()方法,并在第一个活动中重写
onActivityResult
()方法以接收来自第二个活动的结果

在关闭第二个活动(用户必须在其中进行选择)之前,必须使用要传递回第一个活动的数据填充结果意图。()


如果将
OnCLickListener
定义在与
FindItemActivity
相同的文件中,则可以使用此代码
FindItemActivity.this.finish()
OnCLickListener
关闭它。否则,您可以将活动类的链接传递给
OnClickListener
,并使用此链接调用finish方法。

调用第二个活动时,请使用startActivityForResult()方法调用它。。。这将解决您的问题。嗯,这实际上很好,但是如何在我的expandableListAdapter中使用这个侦听器(在FindItemActivity中启动)?我认为您可以在FindItemActivity文件中定义OnClickListener和expandableListAdapter。或者就像我说的,你们必须把活动链接传递给你们的FindItemActivity类。我有点困惑。。。假设我想分别定义它们。我将FindItemActivity的上下文传递给expandableListAdapter,然后expandableListAdapter将其传递给我的ObjectClickListener。所以,我有这个上下文,但我不知道如何使用它。基本上,我必须在那里做的是:1.用要发送的数据准备意图:意图i=新意图();i.putExtra(“名称”,此为添加名称);i.putExtra(“代码”,String.valueOf(this.toAdd.Code));i.putExtra(“价格”,String.valueOf(this.toAdd.Price));2.将我的数据作为结果发送:((FindItemActivity)toEnd).setResult(1,i);//这不管用。。。3.完成我的FindItemActivity:((FindItemActivity)toEnd.Finish();//也不太管用。。。其中toEnd是FindItemActivity的上下文。或者当你说“你的活动链接”时,你的意思可能不是上下文?好吧,我想在一个文件中定义它们。谢谢
public class addOnClickListener implements OnClickListener{
Product toAdd;
Context toEnd;
public addOnClickListener(Product addable, Context context){
    this.toAdd = addable;
    this.toEnd = context;
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent i = new Intent(toEnd,MyCartActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
    i.putExtra("Name", this.toAdd.name);
    i.putExtra("Code", String.valueOf(this.toAdd.code));
    i.putExtra("Price", String.valueOf(this.toAdd.price));
    toEnd.startActivity(i);

}
}