背景信息:我目前有一个正在运行的AppCompatActivity。但是现在,一切都在onCreate
方法中。我担心它会导致我最近遇到的一些小错误,我的PagerAdapter有java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!
只有当我快速来回切换活动时才会出现错误。我想知道修复这个是否能解决这个问题。
系统要求:最低SDK:15,目标SDK:23(在撰写本文时,或者是最新的)
问题:如何将用户界面初始化代码移到onCreateView
方法中?
我熟悉如何实施onCreate
的{{1}}方法,如下所示:
android.support.v4.app.Fragment
但AppCompatActivity没有类似的选项。这些是我的选择,来自AppCompatActivity文档:
查看onCreateView(String name,Context context,AttributeSet attrs)
查看onCreateView(查看父级,字符串名称,上下文上下文, AttributeSet attrs)
这是我的代码: (除了onCreate和onCreateView之外,我省略了方法)
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_songdetail, container, false);
rootView.findViewById(R.id.info).setVisibility(View.INVISIBLE);
return rootView;
}
答案 0 :(得分:0)
您必须使用PlaceholderFragment。 试试这个:
public class RestaurantListActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment(), "fragmentName").commit();
}
}
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() { }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {...}