【问题标题】:Creating a reusable class创建一个可重用的类
【发布时间】:2018-12-13 12:08:41
【问题描述】:

我有一个在 Android 中运行的应用程序,我想创建一个菜单并在某些活动中重复,该菜单调用 Intent 以打开其他活动。

我该怎么做?

想也许我可以创建一个类,但我得到了错误。我在哪里可以为此创建一个类?在 onCreate 方法内部与否? 我怎样才能在另一个活动中重用菜单?

谢谢!!

这是我的菜单代码:

menu_button = (Button) findViewById(R.id.menu_button);
    menu_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popupMenu = new PopupMenu(MainActivity.this, menu_button);
            popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());

            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.one:
                            Intent vista = new Intent(MainActivity.this, openCamera.class);
                            MainActivity.this.startActivity(vista);

                    }
                    return true;

                    /*
                    Toast.makeText(MainActivity.this, "" + item.getTitle(), Toast.LENGTH_SHORT).show();
                    return true;
                    */
                }
            });
            popupMenu.show();
        }
    });

【问题讨论】:

  • 您可以制作 BaseActivity 来放置您的菜单。使用您想要的菜单的基本活动扩展您的活动。

标签: java android class


【解决方案1】:

如果菜单始终相同,并且您想在多个活动中重复使用它,您只需像这样定义它:

public class TestMenu {

    private final PopupMenu popupMenu;

    public TestMenu(final Activity activity, View anchor) {
        popupMenu = new PopupMenu(activity, anchor);
        popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());

        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.one:
                        Intent vista = new Intent(activity, openCamera.class);
                        activity.startActivity(vista);
                }
                return true;
            }
        });
    }

    public void show() {
        popupMenu.show();
    }
}

然后像这样在你的活动中使用它:

public class TestActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Button menu_button = (Button) findViewById(R.id.menu_button);
        TestMenu myMenu = new TestMenu(this, menu_button);
        menu_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myMenu.show();
            }
        });
    }
}

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 2015-06-08
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多