Java Android从非活动类向活动传递参数
我有这个问题 我的活动(CartActivity)启动另一个活动(FindItemActivity) 在FindItemActivity中,有一个ExpandableListView(由自定义ExpandableListAdapter生成),带有按钮(AddItem)和自定义ActionListener(OnclickListener) 我想将参数从actionListener传递到第一个活动(CartActivity) 以下是我现在拥有的内容(在我的点击式侦听器中): 但是,每次按下按钮,应用程序都会启动新的活动,而不是已经在运行的旧活动。。。我需要原始活动中存储的数据,所以我必须恢复它,而不是开始新的活动。。。 编译器告诉我,当从非活动类启动活动时,必须执行FLAG_ACTIVITY_NEW_任务 是否有其他标志可用于恢复活动而不是启动新的活动Java Android从非活动类向活动传递参数,java,android,Java,Android,我有这个问题 我的活动(CartActivity)启动另一个活动(FindItemActivity) 在FindItemActivity中,有一个ExpandableListView(由自定义ExpandableListAdapter生成),带有按钮(AddItem)和自定义ActionListener(OnclickListener) 我想将参数从actionListener传递到第一个活动(CartActivity) 以下是我现在拥有的内容(在我的点击式侦听器中): 但是,每次按下按钮,应用
或者我可以关闭活动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);
}
}