我有一个仅基于片段的应用程序,实际上(我只是创建基本内容)我只有一个片段,直接声明到布局中:
<?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>
这个布局被加载到主活动中,代码如下:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_screen);
}
}
MainFragment 类如下:
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() 中被赋予一个空容器 https://stackoverflow.com/questions/16883831/android-fragment-is-given-a-null-container-in-oncreateview
所有人都说我需要使用交易,但我不明白的是:
如果我有一个在布局中不可变的片段,并且不需要更改(就像在这种情况下,就像在许多例子中,你有一个包含项目列表的 ListFragment),我如何膨胀布局在当前视图内?
使用 ListFragment 它可以工作,但是如果我不想使用它怎么办?
onCreateView方法被正确调用。