我目前正在开发一款Android应用。我的应用程序中有4个布局(1个主布局和3个子布局)。在我的主要布局中,我使用了三个图像按钮,如果单击每个按钮,它将启动一个活动。即,当点击按钮时,它转换到下一个布局。单击按钮时,我使用onClicklistener()方法处理事件。问题是,当单击第一个按钮时,它会成功更改为下一个布局,但是当单击其他两个按钮时,应用程序强制关闭。在每个子布局中,我使用listview来显示一些内容。以下是mainactivity的代码:
public class MainactivityActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity);
ImageButton m1 = (ImageButton) findViewById(R.id.imageButton1);
ImageButton m2 = (ImageButton) findViewById(R.id.imageButton2);
ImageButton m3 = (ImageButton) findViewById(R.id.imageButton3);
m1.setOnClickListener(this);
m2.setOnClickListener(this);
m3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.imageButton1:
Intent intent= new Intent(MainactivityActivity.this,Inspire.class);
startActivity(intent);
break;
case R.id.imageButton2:
Intent inte = new Intent(MainactivityActivity.this,Love.class);
startActivity(inte);
break;
case R.id.imageButton3:
Intent inten = new Intent(MainactivityActivity.this,Other.class);
startActivity(inten);
break;
default:
}
}}
我还添加了值android:onclick =" onClick"在每个按钮的xml布局中。当第一个图像按钮转移到下一个布局但是当点击其他图像按钮时,我的应用程序强制关闭,我得到错误。我试过谷歌搜索但我找不到完美的解决方案。请帮我解决这个问题。提前致谢
答案 0 :(得分:0)
您必须从xml中删除android:onclick="onClick"
。因为在您的活动中您实现了onClickListener,当您点击按钮时,它会在活动中选择onClick
方法,但它无法找到任何导致错误的原因。
答案 1 :(得分:0)
使用setOnClickListener()
以实用方式设置单击侦听器或在清单中声明onClick方法但不同时执行这两种操作。先试一下,看看它是否有效。如果它不起作用,那么您可以通过发布logcat错误消息来更新问题,这将有助于我们为您缩小问题范围。
这是使用logcat的tutorial。祝你好运!
答案 2 :(得分:0)
你已经混合了两种在android中设置clicklistener的方法。我会为你澄清一下。
android:onclick="ClickMe"
属性。如果你这样做,你不要需要在你的java文件中实现onClickListener或setOnClicklistener。您需要在名为ClickMe
的java文件中创建一个以View为参数的方法。 以下行应该在你的xml文件中
android:onclick="ClickMe"
以下方法应该在您的activity.java文件中
public void ClickMe(View v){
switch(v.getId()) {
case R.id.imageButton1:
Intent intent= new Intent(MainactivityActivity.this,Inspire.class);
startActivity(intent);
break;
case R.id.imageButton2:
Intent inte = new Intent(MainactivityActivity.this,Love.class);
startActivity(inte);
break;
case R.id.imageButton3:
Intent inten = new Intent(MainactivityActivity.this,Other.class);
startActivity(inten);
break;
default:
}
}
多数民众赞成,它应该按预期工作,但不要忘记从java文件中删除setOnClicklisteners。
从xml文件中删除以下行/
android:onclick="onClick"
多数民众赞成。你的代码应该有用。
PS 不要忘记在Manifest.xml中添加您的活动
答案 3 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
注意:在执行以下代码之前删除此" android:onclick =" onClick""从xml排出所有ImageButton。
public class MainactivityActivity extends Activity {
ImageButton m1;
ImageButton m2;
ImageButton m3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity);
m1 = (ImageButton) findViewById(R.id.imageButton1);
m2 = (ImageButton) findViewById(R.id.imageButton2);
m3 = (ImageButton) findViewById(R.id.imageButton3);
m1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainactivityActivity.this, Inspire.class);
startActivity(intent);
}
});
m2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent inte = new Intent(MainactivityActivity.this, Love.class);
startActivity(inte);
}
});
m3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent inten = new Intent(MainactivityActivity.this, Other.class);
startActivity(inten);
}
});
}
}
答案 4 :(得分:0)