【问题标题】:Android: Switching between two activities and sharing information between themAndroid:在两个活动之间切换并在它们之间共享信息
【发布时间】:2011-10-19 12:03:23
【问题描述】:

这是一个基本问题,但我需要一些帮助。

我有两个活动:actA,actB。 在actA中我想启动actB并给它一个String,而不是我想结束actB并将另一个String返回给actA(我不想去actA的onCreate(),我宁愿将此值返回给一些actA 中的方法,因此它可以使用来自 actB 的字符串。

感谢您的帮助

【问题讨论】:

    标签: android android-activity


    【解决方案1】:
    From A.java:
    Intent myintentB=new Intent(A.this, B.class).putExtra("<StringName>", "Value");
        startActivityForResult(myintentB, 3);
    
        from B.java:
    
        Intent myintentA=new Intent(B.this, A.class).putExtra("<StringName>", "Value"); 
        finish();
        setResult(3, myintentA);
    
    
        In A.java
    @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                // TODO Auto-generated method stub
                super.onActivityResult(requestCode, resultCode, data);
                String result_string=data.getStringExtra("<StringName>");
            }
    

    【讨论】:

    • 玩结果,使用 onActivityResult();在你的“A”活动中。
    • 什么是Test,数字3是什么意思?
    • 3 是 requestCode 。假设当你使用 startActivityForResult() 超过一次,那么这个 requestCode 将是 onActivityResult 中的标识符
    【解决方案2】:

    在活动 A 中:

    Intent intent = new Intent();
    intent.setClass (getApplicationContext(), ActB.class) ;
    intent.putExtra ("data1","NEW STRING") ;
    context.startActivityForResult(intent) ;
    

    在活动 B 中(onCreate 方法):

    Intent intent = getIntent() ;
    if (intent.hasExtra("data1") )
    String dataSent = intent.getStringExtra("data1") ;
    

    在发回数据时:

    Intent intent = new Intent() ;
    intent.putExtra ("Return" , "RETURN STRING") ;
    setResult(RESULT_OK, intent) ;
    finish() ;
    

    在 Activity A 中:(onActivityResult) [你需要覆盖]

    if (data.hasExtra("Return"))
    String data1 = data.getStringExtra("Return");
    

    【讨论】:

    • 我尝试在 actA 中使用代码的第一部分,但出现两个错误: 1. Intent 类型中的方法 setClass(Context, Class>) 不适用于参数(Class ) 2.context无法解析
    • 对于未解析的上下文,请说 getApplicationContext()。对于 setClass,根据需要包含上下文。
    【解决方案3】:

    下面链接的问题的答案也描述了您正在寻找的同一问题

    How to pull string from bundle in onResume()?

    【讨论】:

      【解决方案4】:

      至于您的第一个问题,您可以在实际创建 Intent 之前使用方法intentname.putExtra("extravalue", value); 为新 Intent 赋予额外的值。 然后,您可以在新创建的 Activity 中读取该值。我知道我在解释方面很糟糕,但我希望你能从我从我制作的应用程序中获取的这段代码中明白这一点。

      ListLinks.java:

                  // Pass the value of the item URL to the linkviewer when a link is clicked
              Intent openLink = new Intent(this, LinkView.class);
              openLink.putExtra("url" , item.URL);
              startActivity(openLink);
      

      LinkView.java

      public void onCreate(Bundle icicle) {
          super.onCreate(icicle);
          setContentView(R.layout.linkview);
      
          Bundle bun = getIntent().getExtras();
          String url = bun.getString("url");
      

      我不太确定如何解决您的第二个问题,所以很遗憾我无法帮助您解决这个问题,但我相信其他人可以。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-05
        • 2019-08-11
        • 1970-01-01
        • 2014-04-13
        • 1970-01-01
        相关资源
        最近更新 更多