如何让一个按钮打开另一个活动?

39

我已经在我的活动XML文件中添加了一个按钮,但我无法让它打开我的另一个活动。请问可以详细说明一下如何操作吗?


2
你能给我们展示一点代码吗?我猜你没有在你的按钮上设置一个 OnClickListener - David Ferrand
1
请发布相关代码。 - Ritesh Gune
2
如果您是编程新手,并尝试使用Android Studio - 请先学习基础知识,对于您来说,Java编程语言将是一个很好的开始。然后学习标记语言 - XML。然后一旦您理解了它 - 您可以转到Android Studio网站并开始阅读,就像其他人一样。然后在了解它之后,您应该尝试创建一些基本项目。有很多Youtube视频可以帮助您入门。在我看来,如果您卡住了,可以来这里的Stack Overflow上提问。 - Alexey Shevelyov
2
然后你必须展示你的工作,证明你不只是试图从社区获取代码片段。我曾经辅导过一些学生,他们会要求我为他们解决问题,但他们对于如何解决问题或者学习任何东西都不感兴趣。相反,当他们有问题时,他们会再次回来让我帮他们解决。这不仅不公平占用了别人的时间和精力,而且还会让你不断地回来问一些简单的问题,如果你花点时间自己去解决,就可以得到答案。如何提出一个好问题 - Alexey Shevelyov
1
从长远来看,如果您至少解决了十几个这些问题,您将会学会如何钓鱼,而不是来吃别人可能为您获取的鱼。这是一个伟大的社区,这里有很多专业人士愿意与他人分享他们宝贵的经验,但我们都必须保持良好和努力学习并对他人有所帮助! - Alexey Shevelyov
9个回答

87

A. 确保你的其他活动已在清单中声明:

<activity
    android:name="MyOtherActivity"
    android:label="@string/app_name">
</activity>

所有活动都必须在清单文件中声明,即使它们没有分配 意图过滤器


B. 在你的MainActivity中做以下操作:

Button btn = (Button)findViewById(R.id.open_activity_button);    

btn.setOnClickListener(new View.OnClickListener() {         
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this, MyOtherActivity.class));
        }
});

23

使用 OnClickListener

在您的 Activity 实例的 onCreate() 方法中,您需要首先使用 findViewById() 找到您的 Button,然后为您的按钮设置一个 OnClickListener,并实现 onClick() 方法,以便启动您的新 Activity

Button yourButton = (Button) findViewById(R.id.your_buttons_id);

yourButton.setOnClickListener(new OnClickListener(){
    public void onClick(View v){                        
        startActivity(new Intent(YourCurrentActivity.this, YourNewActivity.class));
    }
});

这可能是大多数开发者首选的方法。不过,还有一种常见的替代方法。

在 XML 中使用 onClick

另外,您可以使用 android:onClick="yourMethodName" 在您的 Activity 中声明方法名称,在点击您的Button时调用该方法,然后像这样声明您的方法;

public void yourMethodName(View v){
    startActivity(new Intent(YourCurrentActivity.this, YourNewActivity.class));
}

还有一件事,不要忘记在manifest.xml中声明你的新Activity。希望这可以帮到你。

参考资料:


1
这两种方式有区别吗?我猜第一种方式我们可以动态地控制它,还有其他优点吗?(对于像我这样的 Android 新手程序员来说) - ErTR
2
@ErtürkÖztürk,正如你所指出的,第一种方法可以动态更改或更新,但第二种方法需要更少的代码并且稍微更整洁。否则,它们只是完成相同任务的两种替代方法。 - Rudi Kershaw

10
如果您在XML文件中声明了类似于以下内容的按钮:
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="next activity"
        android:onClick="goToActivity2"
        />

然后你可以在Java文件中添加以下内容来使用它来更改活动:

public void goToActivity2 (View view){
    Intent intent = new Intent (this, Main2Activity.class);
    startActivity(intent);
}

请注意,我的第二个活动被称为“Main2Activity”


4
使用以下代码在Android Studio中打开一个已存在的活动:
Button StartButton = (Button) findViewById(R.id.YOUR BUTTONS ID GOES HERE);

StartButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(MainActivity.this, YOUR ACTIVITY'S ID GOES HERE.class));
    }
});

3

在xml文件中编写代码。

<Button android:width="wrap_content"
        android:height="wrap_content"
        android:id="@+id/button"
        android:text="Click"/>

在你的Java文件中编写代码

Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            startActivity(new Intent(getApplicationContext(),Secondclass.class));
           /* if you want to finish the first activity then just call
            finish(); */
        }
    });

3
Button T=(Button)findViewById(R.id.button_timer);
T.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent i=new Intent(getApplicationContext(),YOURACTIVITY.class);
        startActivity(i);
    }
});

2
我做了与用户9876226相同的事情。 唯一的区别是,我通常不使用onClickListener。而是在xml文件中编写以下内容:android:onClick =“open” open是绑定到按钮的函数。 然后只需在您的活动类中创建函数open()。当您单击按钮时,将调用此函数 :) 此外,我认为这种方式比使用侦听器更舒适。

1
使用以下步骤添加新活动(清单文件将自动更新):
文件 > 新建 > 活动 > 空活动 在您的MainActivity.java文件中,在protected void onCreate(Bundle savedInstanceState)内添加以下代码。

确保在结尾调用finish();函数。这样,当您点击返回按钮时,它将不会返回到前一个活动。
Button btn = (Button)findViewById(R.id.open_activity_button);    

btn.setOnClickListener(new View.OnClickListener() {         
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this, MyOtherActivity.class));
            finish();

        }
});

1

请按照以下步骤操作:

  1. 在布局文件夹中插入新的XML布局文件
  2. 重命名window2
  3. 添加新的按钮并加入此行:android:onClick="window2"

mainactivity.java

public void openWindow2(View v) {
        //call window2
        setContentView(R.layout.window2);           
    }
}

1
这不会打开另一个活动。它将更改当前活动的内容。 - IAmGroot
它“可以工作”,但您无法使用返回按钮返回到上一个屏幕。 - Steve Wellens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接