Android开发人员新手ListFragment

时间:2015-02-28 23:47:05

标签: android

所以我确信有一个简单的解释为什么这不起作用,但我不知道它是什么。我已经尝试了所有明显的事情。看过几个演示并调整我的代码以适应它们。我根本无法让这个ListFragement显示出来。有人能说出我做错了吗?或者我需要提供更多细节吗?

这是我的片段:

public class BlankFragment extends ListFragment {
    private static final String[] items = {
            "one", "two", "three", "four", "five"
    };

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        setListAdapter(new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1,
            items));
    }
}

这是我的活动:

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getFragmentManager().findFragmentById(android.R.id.content) == null) {
            getFragmentManager().beginTransaction().replace(
                android.R.id.content, new BlankFragment()).commit();
        }
    }
}

从我正在阅读的内容来看,这个简单应该有效。但事实并非如此。一切都编译并运行,但活动只是空白。请帮忙!

1 个答案:

答案 0 :(得分:0)

Youhou,得到它比我想的更复杂:问题在于你将FragmentFragment混合(欢迎使用Android):你的ActionBarActivity来了,正如您可能从支持库中知道的那样,您使用的v7和片段来自普通的lib,发生的事情是您使用了&#34; false&#34; FragmentManager:您拨打的是getFragmentManager而不是getSupportFragmentManager,但编译时非常惊人(当时要理解的内容要多得多。无论如何,此代码有效:

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.ArrayAdapter;

// @author: Laurent Meyer

public class SoMain extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_so);
        FragmentTransaction fm = getSupportFragmentManager().beginTransaction();
        fm.add(android.R.id.content, new BlankFragment()).commit();


}

public static class BlankFragment extends ListFragment {
    private final String[] items = {
            "one", "two", "three", "four", "five"
    };

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ArrayAdapter<String> aa = new ArrayAdapter<>(getActivity(),
                android.R.layout.simple_list_item_1, items);
        setListAdapter(aa);
    }

}
}

我需要创建一个新的空白项目真是太奇怪了!

希望它有所帮助!