【问题标题】:How to pass string between two activities如何在两个活动之间传递字符串
【发布时间】:2011-06-18 11:54:00
【问题描述】:

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

【问题讨论】:

  • 请问您能澄清您的问题吗?我对您的活动 B 是什么有疑问?
  • 点击活动A中的按钮后会在同一个活动中打开对话框吗?您还想将字符串从活动 B 传递给 A?

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


【解决方案1】:

您需要创建一个类来存储变量。在 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();

就是这样!

【讨论】:

  • 当你的进程被杀死时会中断(例如,因为它在后台并且其他一些应用程序需要内存),然后在第二个 Activity 处重新启动。
  • 谢谢。接收活动时最简单的方法是处于 onPause/onStop 状态。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    也许尝试使用共享首选项!?

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        我认为您需要使用 Bundle 和静态全局变量以及 onActivityResult()。如果您想将以前客户端的客户端编辑为新客户端。假设你有“ClientList”Activity 和“EditClient”Activity

        写入“EditClient”Activity

        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
              }
        
          }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-17
          • 2012-02-03
          • 2011-05-24
          • 2013-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多