如何在Android Studio中打开另一个活动的按钮?

Bio*_*oid 26 java xml android

嗨,我是编程的新手,我正在使用__CODE__我的Android应用程序编码.我曾与之合作,__CODE__但我正在尝试一些新的东西.我添加了一个__CODE__文件按钮,我无法打开我的其他活动.有人可以一步一步告诉我如何做到这一点吗?

Gil*_*mov 69

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

<activity
    android:name="MyOtherActivity"
    android:label="@string/app_name">
</activity>
Run Code Online (Sandbox Code Playgroud)

必须在清单中声明所有活动,即使它们没有为其分配了意图过滤器.


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));
        }
});
Run Code Online (Sandbox Code Playgroud)


Rud*_*haw 16

使用OnClickListener

在你的Activity实例的onCreate()方法中,你需要首先找到你Button的id findViewById(),然后设置一个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));
    }
});
Run Code Online (Sandbox Code Playgroud)

这可能是大多数开发者首选的方法.但是,有一个共同的选择.

在XML中使用onClick

或者,您可以使用android:onClick="yourMethodName"声明方法名称,Activity在您单击时调用哪个方法名称Button,然后像这样声明您的方法;

public void yourMethodName(View v){
    startActivity(new Intent(YourCurrentActivity.this, YourNewActivity.class));
}
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记Activity在你的身份中声明你的新内容manifest.xml.我希望这有帮助.

参考;

  • @ErtürkÖztürk,正如您指出的那样,第一种方法可以动态更改或更新,但第二种方法需要更少的代码并且稍微整洁一些。否则它们只是做同一件事的两种替代方法。 (2认同)

小智 8

如果您在xml文件中声明了与此类似的按钮:

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="next activity"
        android:onClick="goToActivity2"
        />
Run Code Online (Sandbox Code Playgroud)

然后你可以通过将它放在java文件中来使用它来改变活动:

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

请注意,我的第二个活动称为"Main2Activity"


har*_*ash 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);
    }
});
Run Code Online (Sandbox Code Playgroud)