【问题标题】:How to differenttiate between intents coming from two different activies?如何区分来自两个不同活动的意图?
【发布时间】:2020-09-06 18:15:59
【问题描述】:

我的 Android Studio 项目中有三个活动,例如活动 A、B 和 C。 活动 A 和 B 中各有两个按钮。点击这两个按钮后,我需要切换到活动 C。

我的问题是,如何区分从 A 和 B 到 C 的两个意图?

【问题讨论】:

  • Intent 上添加一个额外的内容,表明该Intent 的来源。
  • 能否详细说明。
  • The documenation 展示了如何构建Intent,包括使用附加功能。在Intent 上有一系列putExtra() 方法和相应的一系列get...Extra() 方法(其中... 是基于数据类型的,所以我们有getStringExtra()getBooleanExtra())。 A 和 B 可以各自在其Intent 上调用putExtra(),C 可以通过适当的get...Extra() 变体检索额外的。

标签: java android android-studio android-intent android-activity


【解决方案1】:

如果你知道如何从意图传递数据,为什么不能传递额外的数据来区分按钮,例如

intent.putStringExtra("Button", "A");

【讨论】:

    【解决方案2】:

    您可以通过向意图传递不同的数据来区分意图

    例如

    // Activity 1
    Intent one = new Intent(.....,...);
    one.putStringExtra("source", "activity_one");
    startActivity(one);
    
    //Activity 2
    Intent two = new Intent(.....,...);
    two.putStringExtra("source", "sctivity_two");
    startActivity(two);
    

    在目标活动中

    // May return null
    String s = getIntent().getStringExtra("source");
    
    if(s != null && s.equals("activity_one"){
       /// do stuff
    }else if(s != null && s.equals("activty_two")){
       /// do stuff
    }
    

    【讨论】:

    • getStringExtra (String name) 可以返回 null,因此,您需要在返回的 String 上调用 equal 之前测试可空性。
    【解决方案3】:

    您可以在 Intent Extras 中添加一个标志并检索该标志以识别源活动,例如: 在活动 A 中:

    btnA.setOnClickListener{
        val intent = Intent(baseContext, C::class.java)
        intent.putExtra("ORIGIN", "A")
        startActivity(intent)
    }
    

    在活动 B 中:

    btnB.setOnClickListener{
        val intent = Intent(baseContext, C::class.java)
        intent.putExtra("ORIGIN", "B")
        startActivity(intent)
    }
    

    然后在活动 C onCreate():

    val origin = intent.extras?.getString("ORIGIN", "")
        if (origin.equals("A")){
            //Do something
        }
        else{
            //Do something else
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多