我是android开发新手,我想使用setContentView在两个布局之间切换,我做了两个活动和两个布局,第一个按钮“b1”成功切换到第二个布局但第二个按钮“b2”没有做任何事 这是代码:
public class MainActivity extends Activity { Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.b1); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setContentView(R.layout.activity_second); }});}}
// -
public class second extends Activity{ Button b2; protected void onCreate(Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_second); b2 = (Button) findViewById(R.id.b2); b2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); }});}}
// -
<Button android:id="@+id/b1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="143dp" android:text="Button" />
// -
<Button android:id="@+id/b2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" />
答案 0 :(得分:4)
在您的代码中,您只是在改变布局。不将控制转移到第二个活动。试试这个 -
MainActivity -
import android.content.Intent;
public class MainActivity extends Activity {
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.b1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Main.this, second.class));
finish();
}
});
}}
第二 -
public class second extends Activity{
Button b2;
protected void onCreate(Bundle saveInstanceState)
{
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_second);
b2 = (Button) findViewById(R.id.b2);
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}}
别忘了在清单中添加第二个活动 -
<activity android:name=".second"
</activity>
答案 1 :(得分:1)
您只需在同一活动中更改布局
如果您想跳转到其他活动,则需要使用Intent
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent it = new Intent(MainActivity.this,second.class);
startActivity(it);
}});}}
答案 2 :(得分:0)
如果要在活动之间切换,请使用意图而不是切换黑白布局。 替换
setContentView(R.layout.activity_second);
使用以下代码并尝试
Intent intent = new Intent(getApplicationContext(), second .class);
startActivity(intent);
答案 3 :(得分:0)
您必须尝试切换到第二个活动意味着您必须使用intente函数...
Intent intent = new Intent(CurrentActicity.this,NextActivity.class);
startActivity(intent);
答案 4 :(得分:0)
您有两种布局 -
1) R.layout.activity_main
2) R.layout.activity_second
您正确地通过调用 -
切换到第二个活动setContentView(R.layout.activity_second);
所以它正在按下按钮。
然后调用之前的布局回调用 -
setContentView(R.layout.activity_main);
这是代码 -
public class second extends Activity{
Button b2;
protected void onCreate(Bundle saveInstanceState)
{
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_second);
b2 = (Button) findViewById(R.id.b2);
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.activity_main);
}});}}
答案 5 :(得分:0)
首先,如果您想更改相同活动中的布局,则应使用Fragments
。
现在,您正在同一个Activity中的两个布局之间进行切换。如果您在第一个布局中声明了第一个Button,在第二个布局中声明了第二个按钮 - 您的第二个按钮将无效(如您所见),因为第一个Activity中没有相应的代码。
如果您想在Avtivities之间切换(而不仅仅是您需要使用Intents
的布局。
总结一下:
如果要使用一个活动使用两个或更多布局,请使用Fragments
。
如果您想使用两个不同的活动 - 请使用Intents