我有两个活动A和B,从活动A中,我点击一个按钮,打开一个对话框,其中包含一个由两个编辑文本字段和一个按钮组成的表单(对话框中的按钮用于启动活动B)。所以,我的问题是:如何将活动B中的字符串传递给活动A,但不关闭对话框(该字符串将用于填充两个编辑文本字段之一)。
答案 0 :(得分:4)
您需要创建一个类来存储变量。在ActivityB中使用设置变量的值,创建的类存储它,在ActivityA中获取变量的值。
创建一个类:GlobalVars.java。在这堂课中提出这个:
公共类GlobalVars扩展了Application {
private static String var2;
public static String getVar() {
return var2;
}
public static void setVar(String var) {
var2 = var;
}
}
在ActivityB中将此行放入适当的位置:
String something;
GlobalVars.setVar(something);
在ActivityA中,将此行放入适当的位置:
String getsomething = GlobalVars.getVar();
那就是它!
答案 1 :(得分:1)
如果我理解你的问题是正确的话 你想在活动B返回结果时保留对话框。 如果遇到这种情况,则可以打开onActivityResult
对话框注意:活动A不能是SingleTask,SingleInstance,SingleTop。
我希望它会有所帮助
KPBird
答案 2 :(得分:0)
也许尝试使用共享偏好!?
答案 3 :(得分:0)
您可以使用广播系统将包含数据的Intent发送到另一个活动。
搜索google或stackoverflow有很多教程和如何实现此目的的示例。 据我所知,您希望活动a获得通知,并根据对话框中的某些操作填写字段。
我所建议的是这样做的一种方式。其他答案也为同一问题提供了不同的解决方案。您也可以通过创建对话框注册一个界面,该对话框将从对话框中调用,并在第一个活动中执行某些操作。
答案 4 :(得分:0)
我认为你需要使用Bundle和static全局变量以及onActivityResult()。如果要将先前客户端的客户端编辑到新客户端。假设您有“ClientList”活动和“EditClient”活动
写入“EditClient”活动
Bundle extras = getIntent().getExtras();
if (extras != null)
{
String name = extras.getString(ClientList.KEY_Client);//ClientList.KEY_Client is global static variable of "ClientList" Activity.
if (name != null)
{
nameText.setText(name);//"nameText" is a EditText object represent EditText view
}
}