Android fragments: container variable in onCreateView is null
我有一个仅基于片段的应用程序,实际上(我只是在创建基本内容)我只有一个片段,直接在布局中声明:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.italialinux.fragments.MainFragment" android:id="@+id/main_screen_fragment" android:layout_width="0dp" android:layout_height="match_parent" /> </FrameLayout> |
此布局通过以下代码加载到main活动中:
1 2 3 4 5 6 7 | public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_screen); } } |
MainFragment类如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class MainFragment extends Fragment { final static private long ONE_SECOND = 1000; final static private long TWENTY_SECONDS = ONE_SECOND * 20; private final static String TAG ="MainFragment"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); View view = inflater.inflate(R.layout.new_reminder, container, false); return view; } |
new_reminder布局仅包含两个EditText和几个标签。
问题是我无法膨胀布局,因为在onCreateView中传递的容器变量为null。
我看到了许多关于SO的问题,例如:
Android Fragment在onCreateView()
中被赋予了一个空容器
所有人都说我需要使用交易,但我不了解的是:
如果我的某个片段在布局中是不可变的,并且不需要更改(例如在这种情况下,并且像在许多示例中您具有包含项目列表的ListFragment一样),那么我该如何为布局充气在当前视图内?
使用ListFragment可以工作,但是如果我不想使用它,该怎么办?
onCreateView方法被正确调用。
在主布局中,尝试使用
您不应该在