Android 项目按钮需要单击两次才能启动新活动
我有一个带有操作栏的主要活动,操作栏上有经典的“溢出”按钮和布局顶部的其他项目按钮。我遇到的问题是,我需要单击两次项目按钮来启动以下活动。我不想发生这种情况,我只想“点击一下”启动一项活动。这是我的代码(对不起,如果我没有正确发布)。我怎样才能修好它?多谢各位Android 项目按钮需要单击两次才能启动新活动,android,button,android-actionbar,Android,Button,Android Actionbar,我有一个带有操作栏的主要活动,操作栏上有经典的“溢出”按钮和布局顶部的其他项目按钮。我遇到的问题是,我需要单击两次项目按钮来启动以下活动。我不想发生这种情况,我只想“点击一下”启动一项活动。这是我的代码(对不起,如果我没有正确发布)。我怎样才能修好它?多谢各位 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCr
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
//Aggiungere listener per tutti gli item! (estrarre i listener)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
//TODO
return true;
case R.id.filters:
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent(MainActivity.this, FiltersActivity.class);
startActivity(intent);
return true;
}
});
return true;
case R.id.action_new:
return true;
case R.id.add_button:
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent(MainActivity.this, ButtonsActivity.class);
startActivity(intent);
return true;
}
});
return true;
case R.id.add_project:
//TODO
return true;
default:
return super.onOptionsItemSelected(item);
}
}
和XML文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.logger.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/filters"
android:title="@string/filter"
android:showAsAction="never"/>
<item
android:id="@+id/action_new"
android:showAsAction="ifRoom"
android:icon="@drawable/ic_action_new"
android:visible="true"
android:title="@string/action_new">
<menu>
<item
android:id="@+id/add_project"
android:showAsAction="never"
android:title="@string/add_project"/>
<item
android:id="@+id/add_button"
android:showAsAction="never"
android:title="@string/add_button"/>
</menu>
</item>
</menu>
您不应该使用
设置菜单项ClickListener()
此时,代码中的菜单项已被单击
onCreateOptions菜单()
创建菜单
onOptionsItemSelected()
对MenuItem
单击
您不必在switch语句中设置onClickListeners!
举个例子
case R.id.add_button: {
Intent intent = new Intent(MainActivity.this, ButtonsActivity.class);
startActivity(intent);
return true;
}
我认为问题来自这里:
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent(MainActivity.this, ButtonsActivity.class);
startActivity(intent);
return true;
}
});
您正在OnOptionsItemSelected
内设置一个OnItemClickListener
。过程如下:
单击项目时:设置McClickListener
第二次单击项目时:将操作写入McClickListener
您应该从OnOptions ItemSelected中删除OnItemClickListener,以使其正常工作
PS:侦听器是一个等待操作的对象。当您第一次设置时:它不会立即执行!它等待它所听到的动作。因此,当您设置您的McClickListener时,您必须单击操作发生的按钮。您想做什么?单击“添加”按钮,然后必须启动您的活动?