如何在两个活动之间传递字符串

时间:2011-06-18 11:54:01

标签: android string android-activity android-intent extra

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

5 个答案:

答案 0 :(得分:4)

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

  1. 创建一个类:GlobalVars.java。在这堂课中提出这个:

    公共类GlobalVars扩展了Application {

    private static String var2;
    
    public static String getVar() {
        return var2;
    }
    
    public static void setVar(String var) {
    var2 = var;
    }
    

    }

  2. 在ActivityB中将此行放入适当的位置:

    String something;
    GlobalVars.setVar(something);
    

    在ActivityA中,将此行放入适当的位置:

    String getsomething = GlobalVars.getVar();
    

    那就是它!

答案 1 :(得分:1)

如果我理解你的问题是正确的话 你想在活动B返回结果时保留对话框。 如果遇到这种情况,则可以打开onActivityResult

对话框
  1. 活动A
  2. 点击按钮打开对话框
  3. 开始活动B
  4. 将结果返回给活动A
  5. onActivityResult将调用
  6. 再次打开对话框
  7. 注意:活动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
      }

  }