2

我有两个活动 A 和 B,从活动 A,我单击一个按钮,该按钮打开一个对话框,其中包含一个由两个编辑文本字段和一个按钮组成的表单(对话框中的按钮用于启动活动 B) . 所以,我的问题是:如何将字符串从活动 B 传递到活动 A,但不关闭对话框(该字符串将用于填充两个编辑文本字段之一)。

4

5 回答 5

4

您需要创建一个类来存储变量。在 ActivityB 中使用设置变量的值,创建的类存储它并在 ActivityA 中获取变量的值。

  1. 创建一个类:GlobalVars.java。在这个类中放这个:

    公共类 GlobalVars 扩展应用程序 {

    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();

就是这样!

于 2011-06-18T12:16:17.293 回答
1

听起来您想在活动 B 返回结果时保留对话框。如果是这种情况,那么您可以在 ActivityResult 上打开对话框:

  1. 活动一
  2. 点击按钮打开对话框
  3. 开始活动 B
  4. 将结果返回给活动 A
  5. onActivityResult 将调用
  6. 再次打开对话框

注意:Activity A 不能是 SingleTask、SingleInstance、SingleTop。

于 2011-06-18T12:03:39.987 回答
0

您可以使用广播系统将包含数据的 Intent 发送到另一个活动。

搜索 google 或 stackoverflow 有很多关于如何实现这一点的教程和示例。据我了解,您希望活动 a 得到通知并根据对话框中的某些操作填写字段。

我的建议是这样做的一种方法。其他答案也为同一问题提供了不同的解决方案。您还可以在创建对话框时注册一个接口,该对话框将从对话框内部调用并在第一个活动中执行某些操作。

于 2011-06-18T12:24:02.090 回答
0

我认为您需要使用 Bundle 和静态全局变量以及 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
      }

  }
于 2011-06-18T14:22:07.113 回答
0

也许尝试使用 sharedpreferences !?

于 2011-06-18T12:04:09.750 回答