gpt4 book ai didi

android.support.v4.app.FragmentActivity 缺少操作栏

转载 作者:搜寻专家 更新时间:2023-11-01 08:45:06 25 4
gpt4 key购买 nike

我正在使用支持库 android.support.v4.app.FragmentActivity 来创建基于 fragment 的 Activity 。

自从 Lollipop 以来,我现在在所有基于 fragment 的 Activity 中都缺少我的操作栏。我想知道这是否与现在从 actionbaractivity 继承的 Activity 有关?

我在下面列出了我的 list 、 Activity 和 fragment xml,希望有人能告诉我为什么会这样。设计屏幕都显示标题栏,但在模拟器和实际设备运行时没有。

首先是我为每个 Activity 扩展的 fragment Activity 类,然后是我的 xml 文件:

SingleFragmentActivity.java:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

public abstract class SingleFragmentActivity extends FragmentActivity {

protected abstract Fragment createFragment();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);

FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

if (fragment == null) {
fragment = createFragment();
fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();
}
}

}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="safecontact.net.savemenow" >

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

activity_fragment.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">

<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</FrameLayout>

fragment_appt.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
... REST OF FRAGMENT LAYOUT CUT FOR BREVITY

在设计 View 中,操作栏和标题等清晰可见,但当我在模拟器上运行时,操作栏完全消失,只呈现 Activity View (带 fragment )。

我希望有人能帮助解决这个问题,因为它让我发疯。我确信这与我正在为我的 fragment 使用支持库这一事实有关。还是主题问题?

谢谢。

编辑:按要求列出的 styles.xml:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>

</resources>

.

最佳答案

您的 AppTheme 继承自 Theme.AppCompat。为此,您必须继承 AppCompatActivity。由于 AppCompatActivity 本身继承自 FragmentActivity,因此您现有的大部分代码应该没问题。唯一需要更改的是与操作栏相关的任何内容,例如:

  • 使用getSupportActionBar(),而不是getActionBar(),获取ActionBar对象

  • 在需要时(例如,app:showAsAction)使用自定义命名空间(例如,app)中的属性,而不是 android > 菜单资源中的命名空间(例如,android:showAsAction)

请注意,在旧版本中使用了 ActionBarActivity,但已被声明弃用。

关于android.support.v4.app.FragmentActivity 缺少操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232642/

25 4 0