如何在android中使用setContentView?

时间:2014-03-31 08:45:28

标签: android xml

我是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" />

6 个答案:

答案 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