在Android应用程序中,当单击另一个活动中的按钮时,如何启动一个新活动(GUI),以及如何在这两个活动之间传递数据?


当前回答

在android应用程序中,从另一个活动启动一个活动是非常常见的场景。 要启动一个活动,你需要一个Intent对象。

如何创建意图对象?

意图对象的构造函数中有两个形参

上下文 要启动的活动的名称。(或完整包名)

例子:

例如,如果你有两个活动,说HomeActivity和DetailActivity,你想从HomeActivity启动DetailActivity (HomeActivity—>DetailActivity)。

下面是演示如何启动DetailActivity的代码片段

HomeActivity。

Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);

这样就做完了。

回到按钮点击部分。

Button button = (Button) findViewById(R.id.someid);

button.setOnClickListener(new View.OnClickListener() {
     
     @Override
     public void onClick(View view) {
         Intent i = new Intent(HomeActivity.this,DetailActivity.class);
         startActivity(i);  
      }

});

其他回答

    Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);    
    startActivity(in);

    This is an explicit intent to start secondscreen activity.

以马内利,

我认为额外的信息应该放在启动活动之前,否则数据将不可用,如果你在NextActivity的onCreate方法中访问它。

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

myIntent.putExtra("key", value);

CurrentActivity.this.startActivity(myIntent);

点击按钮时:

loginBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent= new Intent(getApplicationContext(), NextActivity.class);
        intent.putExtra("data", value); //pass data
        startActivity(intent);
    }
});

从nex战术vity.class接收额外的数据:

Bundle extra = getIntent().getExtras();
if (extra != null){
    String str = (String) extra.get("data"); // get a object
}

科特林 2022

最简单的方法:

val a = Intent(this.context, BarcodeActivity::class.java)
        a.putExtra("barcode", barcode)
        startActivity(a)

在另一边(在我的情况下是BarcodeActivity):

val intent: Intent = intent
var data = intent.getStringExtra("barcode")

点击这里阅读更多

科特林

第一个活动

startActivity(Intent(this, SecondActivity::class.java)
  .putExtra("key", "value"))

第二个活动

val value = getIntent().getStringExtra("key")

建议

总是把钥匙放在固定的文件,以更有管理的方式。

companion object {
    val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
  .putExtra(PUT_EXTRA_USER, "value"))