如何在活动之间共享操作栏和项目

时间:2015-01-04 23:41:27

标签: android android-actionbar

这可能非常简单,但我有两个活动,它们都需要动作栏中的相同项目,但是当我开始第二个活动(第一个是主要活动)时,动作溢出菜单消失。我知道操作栏对于其创建的活动是唯一的,但我想知道如何在各种活动中使用相同的操作栏。感谢

编辑:这里有一些代码可能有助于我的第二个操作栏项目不能用于第一个活动:     package 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);
    }  
}

这是我开始第一次活动的第一堂课:

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();
        }
    }

1 个答案:

答案 0 :(得分:2)

您可以使用继承。

创建一个新的Activity,我们称之为MenuActivity,并将所有选项逻辑放在。

MenuActivity extends Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
}

现在你的2个活动只需要扩展它(所以它们将继承MenuActivity的逻辑,除非你覆盖它的方法而不调用super)

MainActivity extends MenuActivity

Activity2 extends MenuActivity