单击图像按钮开始新布局

时间:2014-03-30 17:35:56

标签: android imagebutton

我有以下代码,可以在点击ImageButton时打开新的布局(.xml文件)。

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageButton;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageButton img = (ImageButton) findViewById(R.id.imageView1);
    img.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.board_play);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

但是我在onClick方法中遇到错误。帮助我可以更改以删除错误。我是否使用正确的实现来使用ImageButton更改布局?

3 个答案:

答案 0 :(得分:2)

将不同的布局设置为相同的活动是糟糕的设计。每个Activity都有一个生命周期,并且应该只为活动设置一个布局。

而是启动一个新活动并将board_play设置为相同。

使用

  @Override
    public void onClick(View view) {
        startActivity(new Intent(MainActivity.this,BoardActivity.class));
    }

在BoardActivity中

 public class BoardActivity extends Activity
 {
     @Override
     protected void onCreate(final Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.board_play);
 }

确保在清单文件中为BoarActivity创建条目。

您也可以使用片段。

答案 1 :(得分:1)

我将使用多个线性布局或/和您想要的任何容器,控制可见性属性而不是setContentView

答案 2 :(得分:1)

制作新的Class 例如MainActivity2.java

public class MainActivity2   extends Activity {

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.board_play);
}

}

AndroidManifest.xml 中,别忘了添加

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

您的代码现在应如下所示:

public class MainActivity extends Activity {

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageButton img = (ImageButton) findViewById(R.id.imageView1);
    img.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            // TODO Auto-generated method stub
          Intent i = new Intent(MainActivity.this,MainActivity2.class);
          startActivity(i);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}