在ActionBarActivity中更改片段

时间:2014-12-28 22:35:47

标签: java android

我有Google's tutorial中的SettingsActivity:

public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Display the fragment as the main content.
    getFragmentManager().beginTransaction()
            .replace(android.R.id.content, new SettingsFragment())
            .commit();
}
}

它工作正常,但当SettingsActivity从ActionBarActivity(Activity的子类)扩展时,我得到了空白屏幕。你能解释一下为什么吗?

3 个答案:

答案 0 :(得分:0)

您最好不要将主要活动扩展到ActionBarActivity,因为ActionBarActivity使用 campcatv7 ,而且相信我,它确实无法正常工作。

您只需延长Activity,稍后您的主要活动就会声明您想要的任何内容以及任何类型的设置或动画等。

答案 1 :(得分:0)

烨。只有API 7-10才需要ActionBarActivity。它来自Appcompat支持库,并使用方法getSupportFragmentManager()而不是getFragmentManager()。此外,支持库中没有等效的PreferenceFragment。有各种解决方法。

还有一件事要提 - 如果您选择使用片段(请参阅下面的代码),它可能不会出现。我认为某处有一个错误。如果添加在自己的处理程序线程中,它确实会出现:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Check if this activity was created before
    if (savedInstanceState == null) { 
    // Create a fragment
        new Handler().post(new Runnable(){

            @Override
            public void run() {

                StatusFragment fragment = new StatusFragment();
                getSupportFragmentManager()
                .beginTransaction()
                .add(android.R.id.content, fragment,
                fragment.getClass().getSimpleName())
                .commit(); 
            }

        });

    }

答案 2 :(得分:-1)

尝试使用Activity类作为接口,然后实现它。

public class SettingsActivity extends ActionBarActivity implements Activity {


}