我有以下代码,可以在点击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更改布局?
答案 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;
}
}