我正在使用Intent启动活动,如下所示:
起源:
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);
他们为什么要做这些额外的步骤?我的操作方式有问题吗?
我们将对象解析为意图上的多余对象的原因是,这样您就可以为激发的特定结果保留该意图实例的状态。
您正在为ChallengeLogin活动的每个实例设置要与之交互的对象的值。如果在开始上一次交互的意图时访问和/或修改了该挑战活动,您将收到当前实例的值,而不是意图发起时需要传递的值。
那是公正的,也是为什么为什么在启动活动时进行静态调用不是实现所需功能的最佳方法。
同样,您也可以通过以下方法:使用putExtra()和getExtra()。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句