带有ActionBarCompat的android 2.3.3(但不是4.3)中的空白片段

时间:2013-12-08 15:02:41

标签: android android-fragments android-actionbar android-actionbar-compat

package com.example.app;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, new PlaceholderFragment()).commit();
    }
}
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
    }
}

}

当我在4.3模拟器中运行此代码时,我得到了所需的“Hello world!”信息。在2.3.3模拟器中,我得到一个空白屏幕(ActionBar会显示)。

1 个答案:

答案 0 :(得分:2)

显然,这是针对Android 2.3及更低版本的已知错误。这个here存在错误。

v19之前的支持库版本的解决方案:

尝试为Activity创建XML布局(例如只有ViewGroup LinearLayoutRelativeLayout,并为其指定ID。然后在setContentView(R.layout.newLayout)的{​​{1}}中拨打Activity。然后使用onCreate()的ID作为ViewGroup的第一个参数。

此问题自支持库版本19起已解决。如果使用SDK管理器更新到支持库的最新版本,则代码应该可以正常工作。

您可能还会在上面的链接上找到帖子#6。