如何在按钮单击时启动新活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在按钮单击时启动新活动相关的知识,希望对你有一定的参考价值。

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

答案

简单。

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);

通过以下方式检索额外内容:

@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    String value = intent.getStringExtra("key"); //if it's a string you stored.
}

不要忘记在AndroidManifest.xml中添加新活动:

<activity android:label="@string/app_name" android:name="NextActivity"/>
另一答案

你可以试试这段代码:

Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);
另一答案

试试这个简单的方法。

startActivity(new Intent(MainActivity.this, SecondActivity.class));
另一答案

开始新活动的方法是广播意图,并且可以使用特定类型的意图将数据从一个活动传递到另一个活动。我的建议是你查看与intents相关的Android开发者文档;它是关于这个主题的丰富信息,也有例子。

另一答案

从另一个活动开始活动是Android应用程序中非常常见的情况。 要开始一项活动,您需要一个Intent对象。

如何创建Intent对象?

intent对象在其构造函数中使用两个参数

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

Example:

enter image description here

例如,如果你有两个活动,比如HomeActivityDetailActivity,你想从DetailActivity(HomeActivity - > DetailActivity)启动HomeActivity

以下是代码片段,其中显示了如何从中启动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);  
      }

});
另一答案

从此活动开始另一个活动,您也可以通过Bundle Object传递参数。

Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);

在另一个活动中回收数据(YourActivity)

String s = getIntent().getStringExtra("USER_NAME");
另一答案

Kotlin

第一项活动

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"))
另一答案

实现View.OnClickListener接口并覆盖onClick方法。

ImageView btnSearch;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search1);
        ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
        btnSearch.setOnClickListener(this);
    }

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSearch: {
                Intent intent = new Intent(Search.this,SearchFeedActivity.class);
                startActivity(intent);
                break;
            }
另一答案

虽然已经提供了正确的答案,但我在这里用Kotlin语言搜索答案。这个问题不是针对特定语言的,所以我在Kotlin语言中添加代码来完成这个任务。

这是你在Kotlin为android做的这个

testActivityBtn1.setOnClickListener{
      val intent = Intent(applicationContext,MainActivity::class.java)
      startActivity(intent)

 }
另一答案

首先按一下xml中的Button。

  <Button
        android:id="@+id/pre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/ic_launcher"
        android:text="Your Text"
        />

让听众按下。

 pre.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });
另一答案

单击按钮时:

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);
    }
});

要从NextActivity.class收到额外的数据:

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

创建ViewPerson活动的intent并传递PersonID(例如,用于数据库查找)。

Intent i = new Intent(getBaseContext(), ViewPerson.class);                      
i.putExtra("PersonID", personID);
startActivity(i);

然后在ViewPerson Activity中,您可以获取额外数据包,确保它不为空(如果您有时不传递数据),然后获取数据。

Bundle extras = getIntent().getExtras();
if(extras !=null)
{
     personID = extras.getString("PersonID");
}

现在,如果您需要在两个活动之间共享数据,您还可以拥有一个Global Singleton。

public class YourApplication extends Application 
{     
     public SomeDataClass data = new SomeDataClass();
}

然后在以下任何活动中调用它:

YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here.  Could be setter/getter or some other type of logic
另一答案

在第一个活动中编写代码。

button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
                       //You can use String ,arraylist ,integer ,float and all data type.
                       intent.putExtra("Key","value");
                       startActivity(intent);
                        finish();
            }
         });

在secondActivity.class中

String name = getIntent().getStringExtra("Key");
另一答案

将按钮小部件放在xml中,如下所示

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
/>

之后初始化并处理Activity中的click侦听器,如下所示。

在Activity On Create方法中:

Button button =(Button) findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       Intent intent = new 
            Intent(CurrentActivity.this,DesiredActivity.class);
            startActivity(intent);
    }
});
另一答案

按钮单击打开活动的最简单方法是:

  1. 在res文件夹下创建两个活动,向第一个活动添加一个按钮,并为onclick函数命名。
  2. 每个活动应该有两个java文件。
  3. 以下是代码:

ma

以上是关于如何在按钮单击时启动新活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在主片段中单击按钮时打开导航抽屉?

ActivityNotFoundException,启动活动时出错

Android:单击按钮时默认选项卡式活动不会启动

Android:单击片段中的按钮时如何通知活动? [复制]

如何在按钮单击时开始新活动

导航抽屉活动:在按钮单击时从片段移动到片段