使用菜单资源在Android中启动新活动。

huangapple 未分类评论45阅读模式
英文:

Using a menu resource to start new activities in Android?

问题

我在我的Android应用程序中有一个菜单资源文件,我希望它作为底部导航栏出现在应用程序的所有屏幕上。

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/home_nav"
        android:title="@string/home"
        android:onClick="goHome"/>

    <item
        android:id="@+id/navigation_timer"
        android:icon="@drawable/timer_nav"
        android:title="@string/timer"
        android:onClick="goToTimer"/>

    <item
        android:id="@+id/navigation_myAlarms"
        android:icon="@drawable/myalarms_nav"
        android:title="@string/my_alarms"
        android:onClick="goToAlarms"
        />

    <item
        android:id="@+id/navigation_settings"
        android:icon="@drawable/settings_nav"
        android:title="@string/preferences"
        android:onClick="goSettings"
        />

为了触发新的屏幕,我使用了android:onClick属性链接到了一些方法,这些方法我放在了我的MainActivity中。

    public void goHome(MenuItem m) {
        Intent h = new Intent(this, MainActivity.class);
        startActivity(h);
    }

    public void goToTimer(MenuItem m) {
        Intent t = new Intent(this, TimerActivity.class);
        startActivity(t);
    }

    public void goToAlarms(MenuItem m) {
        Intent a = new Intent(this, MyAlarms.class);
        startActivity(a);
    }

    public void goSettings(MenuItem m) {
        Intent s = new Intent(this, SettingsActivity.class);
        startActivity(s);
    }

这可以用于导航到新的屏幕,但如果这些屏幕也有操作栏(action bars),则会崩溃。我不太确定为什么会这样,但我知道我做错了些什么。有人能帮忙吗?谢谢。

英文:

I have a menu resource file in my Android app which I want to appear on all screens in my application as a Bottom Navigation Bar.

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/home_nav"
        android:title="@string/home"
        android:onClick="goHome"/>

    <item
        android:id="@+id/navigation_timer"
        android:icon="@drawable/timer_nav"
        android:title="@string/timer"
        android:onClick="goToTimer"/>

    <item
        android:id="@+id/navigation_myAlarms"
        android:icon="@drawable/myalarms_nav"
        android:title="@string/my_alarms"
        android:onClick="goToAlarms"
        />

    <item
        android:id="@+id/navigation_settings"
        android:icon="@drawable/settings_nav"
        android:title="@string/preferences"
        android:onClick="goSettings"
        />

In order to fire the new screens I have used the android:onClick attribute to link to some methods which I put in my MainActivity.

    public void goHome(MenuItem m) {
        Intent h = new Intent(this, MainActivity.class);
        startActivity(h);
    }

    public void goToTimer(MenuItem m) {
        Intent t = new Intent(this, TimerActivity.class);
        startActivity(t);
    }

    public void goToAlarms(MenuItem m) {
        Intent a = new Intent(this, MyAlarms.class);
        startActivity(a);
    }

    public void goSettings(MenuItem m) {
        Intent s = new Intent(this, SettingsActivity.class);
        startActivity(s);
    }

This works to navigate to the new screens, but it will crash if they have action bars too. I'm not sure why this is but I know I'm doing something wrong. Can anybody help? Thanks

huangapple
  • 本文由 发表于 2020年4月7日 03:33:02
  • 转载请务必保留本文链接:https://java.coder-hub.com/61067573.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定