我是Android开发的新手,并创建了我的第一个应用程序,该应用程序包含将产品的可滚动列表显示为ImageViews,并可以通过长按鼠标来访问每个产品的详细信息。该应用程序包含三种活动:在应用程序启动时的启动活动,显示产品列表和每个产品的项目活动的主要活动。
启动活动没有操作栏,它只有一个背景图像,该图像在启动应用程序2秒钟后显示。主要活动包含一个标有“产品”的ActionBar,而对于每个产品或我称之为“ Item”的产品,其ActionBar应该被标为“ Item x”。最初,它的工作方式是这样的,但是没有返回按钮,这意味着每次在主“活动”中长时间单击后访问项目时,我都无法返回并关闭应用程序。
为了解决这个问题,我尝试按照https://developer.android.com/training/appbar/up-action上的android教程在每个项目活动的操作栏中为每个项目添加一个UP按钮:
在AndroidManifest.xml上用于项目:
<activity android:name=".Item7Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
关于项目活动:
getSupportActionBar().setTitle("Item 7");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
现在我遇到了一个新问题,在ActionBar上根本没有出现UP按钮,并且标题与它们的父项(主要活动)相同。我不知道问题来自何处,除操作栏外,该应用程序按预期运行。
这是我的代码的一部分:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androtp3">
<application
android:allowBackup="true"
android:icon="@mipmap/tp3_app_logo"
android:label="Products"
android:roundIcon="@mipmap/tp3_app_logo_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Item7Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity android:name=".Item6Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity android:name=".Item5Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity android:name=".Item4Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity android:name=".Item3Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity android:name=".Item2Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity android:name=".Item1Activity" android:parentActivityName="com.example.androtp3.MainActivity"/>
<activity
android:name=".SplashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_splash"
android:theme="@style/FullscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" />
</application>
</manifest>
styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="FullscreenTheme" parent="AppTheme">
<item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">@null</item>
<item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
<item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
</style>
<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/black_overlay</item>
</style>
Item1活动(其他代码相同):
public class Item1Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item1);
getSupportActionBar().setTitle("Item 1");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
项目布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView2"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Item1Activity"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/item1_desc"
android:paddingTop="10dp"
android:src="@drawable/item1"></ImageView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/prix"
android:textColor="#E91E63"
android:textSize="18sp"
android:textStyle="bold"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="0dp"
android:paddingStart="10dp"
android:paddingEnd="0dp">
</TextView>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="visible"
android:paddingLeft="8dp"
android:paddingRight="0dp"
android:paddingStart="8dp"
android:paddingEnd="0dp">
<RadioButton
android:id="@+id/radioButton"
style="@style/Widget.AppCompat.CompoundButton.RadioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/avecgar"
android:visibility="visible" />
<RadioButton
android:id="@+id/radioButton2"
style="@style/Widget.AppCompat.CompoundButton.RadioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sansgar"
android:visibility="visible" />
</RadioGroup>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/description"
android:textColor="#E91E63"
android:textSize="18sp"
android:textStyle="bold"
android:paddingTop="20dp"
android:paddingLeft="8dp"
android:paddingRight="0dp"
android:paddingStart="8dp"
android:paddingEnd="0dp"></TextView>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/item1_desc"
android:paddingLeft="8dp"
android:paddingRight="0dp"
android:paddingStart="8dp"
android:paddingEnd="0dp"/>
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/livraison"
android:textColor="#E91E63"
android:textSize="18sp"
android:textStyle="bold"
android:paddingLeft="8dp"
android:paddingRight="0dp"
android:paddingStart="8dp"
android:paddingEnd="0dp"/>
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/livraison_type1"
android:paddingLeft="8dp"
android:paddingRight="0dp"
android:paddingStart="8dp"
android:paddingEnd="0dp"/>
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/garantie"
android:textColor="#E91E63"
android:textSize="18dp"
android:textStyle="bold"
android:paddingLeft="8dp"
android:paddingRight="0dp"
android:paddingStart="8dp"
android:paddingEnd="0dp"/>
<TextView
android:id="@+id/textView6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="0dp"
android:paddingRight="0dp"
android:text="@string/garantie1" />
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="0dp"
android:paddingRight="0dp"
android:text="@string/lien"
android:textColor="#E91E63"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="0dp"
android:paddingRight="0dp"
android:selectAllOnFocus="false"
android:text="@string/lien1"
android:textColor="#E91E63"
/>
</LinearLayout>
</ScrollView>
我认为问题可能出在xml文件之一中。
用于后退按钮:
getSupportActionBar().setTitle("Item7");
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
并且还需要重写一些功能:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}