如何在活动之间共享操作栏及其上的项目
How to share action bar and items on it between activities
这可能非常简单,但我有两个活动都需要操作栏中的相同项目,但是当我启动第二个时 activity(第一个是主要的),操作溢出菜单消失了。我知道操作栏是其创建的 activity 所独有的,但我想知道如何在各种活动中使用相同的操作栏。谢谢
编辑:这里有一些代码可能有助于解决我的第二期操作栏项目无法解决第一期 activity 问题:
包裹 com.example.wfhsregistry;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MenuActivity extends Activity{
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
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.
int id = item.getItemId();
if (id == R.id.menuSettings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是我的第一个 class 开始我的第一个 activity:
package com.example.wfhsregistry;
import java.lang.reflect.Field;
import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.ViewConfiguration;
public class Main extends MenuActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionbar = getActionBar();
setContentView(R.layout.splash);
Thread logotimer = new Thread() {
public void run() {
try {
sleep(5000);
Intent menuIntent = new Intent(
"com.example.wfhsregistry.MENU");
startActivity(menuIntent);
} catch (Exception e) {
e.printStackTrace();
} finally {
finish();
}
}
};
logotimer.start();
}
public void getOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
您可以使用继承。
创建一个新的 Activity 我们将其命名为 MenuActivity 并将所有选项逻辑放入其中。
MenuActivity extends Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
}
现在您的 2 个 Activity 只需要扩展它(因此它们将继承 MenuActivity 的逻辑,除非您在不调用 super 的情况下覆盖它的方法)
MainActivity extends MenuActivity
和
Activity2 extends MenuActivity
这可能非常简单,但我有两个活动都需要操作栏中的相同项目,但是当我启动第二个时 activity(第一个是主要的),操作溢出菜单消失了。我知道操作栏是其创建的 activity 所独有的,但我想知道如何在各种活动中使用相同的操作栏。谢谢
编辑:这里有一些代码可能有助于解决我的第二期操作栏项目无法解决第一期 activity 问题: 包裹 com.example.wfhsregistry;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MenuActivity extends Activity{
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
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.
int id = item.getItemId();
if (id == R.id.menuSettings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是我的第一个 class 开始我的第一个 activity:
package com.example.wfhsregistry;
import java.lang.reflect.Field;
import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.ViewConfiguration;
public class Main extends MenuActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionbar = getActionBar();
setContentView(R.layout.splash);
Thread logotimer = new Thread() {
public void run() {
try {
sleep(5000);
Intent menuIntent = new Intent(
"com.example.wfhsregistry.MENU");
startActivity(menuIntent);
} catch (Exception e) {
e.printStackTrace();
} finally {
finish();
}
}
};
logotimer.start();
}
public void getOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
您可以使用继承。
创建一个新的 Activity 我们将其命名为 MenuActivity 并将所有选项逻辑放入其中。
MenuActivity extends Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
}
现在您的 2 个 Activity 只需要扩展它(因此它们将继承 MenuActivity 的逻辑,除非您在不调用 super 的情况下覆盖它的方法)
MainActivity extends MenuActivity
和
Activity2 extends MenuActivity