gpt4 book ai didi

Android Intent putExtra 与静态调用?

转载 作者:搜寻专家 更新时间:2023-11-01 07:51:03 24 4
gpt4 key购买 nike

我正在使用如下 Intent 启动 Activity :

来源:

public class ChallongeLogin extends Activity
{
public static String API_KEY, SUBDOMAIN;

public void onClick(View view)
{
API_KEY = api_key.getText().toString();
SUBDOMAIN = subdomain.getText().toString();

Intent intent = new Intent(this, ChallongeEvents.class);
startActivity(intent);
}
}

目标:

public class ChallongeEvents extends Activity implements View.OnClickListener 
{
String API_KEY = ChallongeLogin.API_KEY;
String SUBDOMAIN = ChallongeLogin.SUBDOMAIN;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_challonge_events);
}
}

如您所见,我所做的只是在创建 ChallongeEvents 类时,我只是从 ChallongeLogin 中获取静态值并将它们放入局部变量中。

现在在这里查看 Google 的官方 Android 教程: http://developer.android.com/training/basics/firstapp/starting-activity.html

他们的做法略有不同。他们不使用从原始源调用的静态值,而是使用 putExtra 传递数据:

intent.putExtra(EXTRA_MESSAGE, message);

然后他们检索它:

String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

他们为什么要做这些额外的步骤?我这样做的方式有问题吗?

最佳答案

我们将对象解析为额外的 Intent 的原因是,您要为触发的特定结果保留 Intent 实例的状态。

您正在为 ChallengeLogin Activity 的每个实例设置您希望与之交互的对象的值。如果在您启动先前交互的 Intent 时访问和/或修改了此挑战 Activity ,您将收到当前实例化的值,而不是您在 Intent 启动时需要传输的值。

这是公正的,也是为什么在开始 Activity 时进行静态调用并不是执行所需操作的最佳方式的原因。

另外,你也可以通过这个:Using putExtra() and getExtra().

关于Android Intent putExtra 与静态调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34986935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com