在我的android项目中,到目前为止大约有10个活动,我希望这些活动有单独的溢出菜单(每个活动有一个溢出菜单,其中包含不同的项目),是否可能?如果有可能,那么任何人都可以告诉我如何创建它们。我使用Android Studio作为我的IDE。 以下是我的一些源代码
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<group android:checkableBehavior="single">
<!--only one item can be seleted-->
<item
android:id="@+id/itemBlue"
android:orderInCategory="1"
android:title="@string/blueText"
app:showAsAction="never" />
<item
android:id="@+id/itemRed"
android:orderInCategory="2"
android:title="@string/redText"
app:showAsAction="never"
/>
<item
android:id="@+id/itemGreen"
android:title="@string/greenText"
app:showAsAction="never"
android:orderInCategory="3"
/>
</group>
</menu>
这是一个活动,即HomeScreen.java
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
public class HomeScreen extends ActionBarActivity implements View.OnClickListener {
private ImageButton ibLogin,ibSeeTimeTable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
ibLogin=(ImageButton)findViewById(R.id.ibLogin);
ibSeeTimeTable=(ImageButton)findViewById(R.id.ibSeeTimeTable);
ibLogin.setOnClickListener(this);
ibSeeTimeTable.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.ibLogin:
startActivity(new Intent(this,MainActivity.class));
break;
case R.id.ibSeeTimeTable:
startActivity(new Intent(this,SelectTimeTable.class));
finish();
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
// this method is called when an item is being selected from overflow menu
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
//first we have to make an object of the RelativeLayout
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.mainMenu);
switch (item.getItemId()) {
case R.id.itemBlue:
if (item.isChecked()) {
//if it is already checked
item.setChecked(false);
} else {
item.setChecked(true);
}
relativeLayout.setBackgroundColor(Color.BLUE);
return true;
case R.id.itemGreen:
if (item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
relativeLayout.setBackgroundColor(Color.GREEN);
return true;
case R.id.itemRed:
if (item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
relativeLayout.setBackgroundColor(Color.RED);
return true;
// this indicate that the event is handled
default:
return super.onOptionsItemSelected(item);
//if any event doesnot catch it, then this default works
}
//noinspection SimplifiableIfStatement
}
}
我有超过10个其他活动,我如何为他们添加单独的溢出方法
答案 0 :(得分:2)
您应该覆盖每个活动中的onCreateOptionsMenu(菜单菜单)方法,并指定与该活动相关的菜单xml资源。例如:
在app / res / menu中为每个活动创建一个xml: menu_activity1.xml menu_activity2.xml menu_activity3.xml
然后在每个活动中:
@Override
public boolean onCreateoptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_activity1, menu);
return true;
}
然后,当然,覆盖onOptionsItemSelected(MenuItem项)以进行适当的响应。
单独注意:碎片,伙计,碎片!