【发布时间】:2021-07-17 20:45:05
【问题描述】:
我想要一些关于如何在您的活动中正确扩充工具栏的建议,以便来自任何活动的任何输入都使用在 menu.xml 资源中定义的相同菜单。
下面的代码有以下内容:
- 类
MainActivity和Screen0 -
MainActivity和Screen0的布局 - menu.xml
就目前而言,第一个活动的菜单膨胀发生了,工作正常。当它进入下一个屏幕 (Screen0) 时,我在Screen0 的布局中再次定义工具栏,但使用android:id="@id/my_toolbar_initial_screen" 而不是android:id="@+id/my_toolbar_initial_screen",就像在MainActivitylayout 中一样。
我的问题是,当我按下Screen0 布局上的静音按钮时,它会在Screen0 中启动另一个音频实例。我需要将两个屏幕上的两个工具栏链接在一起,因此如果用户在Screen0 的布局上按下静音,它会理解它与MainActivity 布局中的同一菜单交互。
这样做的正确方法是什么?
清单:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.finalProject">
<activity android:name=".Screen0"
android:parentActivityName=".MainActivity"
android:theme="@style/Theme.finalProject">
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
MainActivity.java
public class MainActivity extends AppCompatActivity {
MediaPlayer gMusic;
MediaPlayer gMusicBattleSong;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load initial screen
setContentView(R.layout.activity_main);
// Set a tool bar using androidx library (more updated version of zybooks example)
Toolbar myToolBar = findViewById(R.id.my_toolbar_initial_screen);
setSupportActionBar(myToolBar);
// gMusic is a global MediaPlayer type
gMusic = new MediaPlayer();
// loading an mp3 into the gMusic object
gMusic = MediaPlayer.create(MainActivity.this, R.raw.battle_theme);
}
Screen0.java
public class Screen0 extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen0);
Toolbar myToolBar = findViewById(R.id.my_toolbar_initial_screen);
setSupportActionBar(myToolBar);
getMenuInflater().inflate(R.menu.menu, menu);
}
activty_main.xml 布局
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:actionBarNavMode="standard"
>
<androidx.appcompat.widget.Toolbar
android:id="@+id/my_toolbar_initial_screen"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/Sapphire"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView"
app:layout_constraintVertical_bias="0.0"
/>
Screen0.xml 布局
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Screen0">
<androidx.appcompat.widget.Toolbar
android:id="@id/my_toolbar_initial_screen"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/Sapphire"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView2"
app:layout_constraintVertical_bias="0.0" />
menu.xml
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Mute the music -->
<item android:id="@+id/mute_menu_item"
android:title="@string/mute_music"
app:showAsAction="always"
android:onClick="muteMusic"
/>
<!-- Restart menu item -->
<item
android:id="@+id/restart_menu_item"
android:icon="@drawable/light_bulb"
android:title="@string/restart"
app:showAsAction="never"
android:onClick="restartStory"
/>
【问题讨论】:
-
请发布您正在尝试的实际代码,并解释您期望什么以及什么不起作用。对一般问题的描述是不充分且含糊的。请咨询stackoverflow.com/help/how-to-ask 寻求帮助。
标签: android android-studio android-layout