如何在MainActivityClass中调用单独的FragementClass的onCreateView?
How to call onCreateView of a separate Fragement Class in MainActivity Class?
请帮助我。我想将 Fragment class List 显示到 MainActivity 中。我在 main activity new () 中尝试;但它显示空白页,但是当我将所有数据放入 mainActivity 和 运行 时,它会显示数据列表。
实际上,我想学习如何将此方法从其他 class 获取到 mainactivity 中。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
new ForecastFragment();
}
//----------------- A Separate ForecastFragment Class ------
public class ForecastFragment extends Fragment {
public ForecastFragment() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String[] data={
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
};
ArrayAdapter<String> adapter;
View rootView=inflater.inflate(R.layout.list_item_forecast,container,false);
ListView listView =(ListView)rootView.findViewById(R.id.listview);
List<String> listData=new ArrayList<String>(Arrays.asList(data));
adapter=new ArrayAdapter<String>(
getActivity(),R.layout.list_item_forecast,R.id.textView,listData);
listView.setAdapter(adapter);
return rootView;
}
}
你不能只通过调用new来实例化一个片段,你必须将它添加到堆栈中:
getFragmentManager()
.beginTransaction()
.add(R.id.container, new ForecastFragment(), "fragment_tag")
.commit();
其中 R.id.container 是布局中用于保存片段的容器(通常是 FrameLayou)。
在你的 MainActivity layout file
中,你应该有一个 FrameLayout
来包含你的片段。
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
现在在您的 MainActivity
class 中,您将像这样实例化您的 Fragment :
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new ForecastFragment(), ForecastFragment.class.getSimpleName()).commit();
您可以在 MainActivity
class 中的任何位置实例化上述片段。在您的情况下,您应该在 MainActivity's onCreate()
中执行此操作
如果不想使用Android支持版本库,可以使用:
getFragmentManager().beginTransaction()
.add(R.id.fragment_container, new ForecastFragment(), ForecastFragment.class.getSimpleName().commit();
请帮助我。我想将 Fragment class List 显示到 MainActivity 中。我在 main activity new () 中尝试;但它显示空白页,但是当我将所有数据放入 mainActivity 和 运行 时,它会显示数据列表。 实际上,我想学习如何将此方法从其他 class 获取到 mainactivity 中。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
new ForecastFragment();
}
//----------------- A Separate ForecastFragment Class ------
public class ForecastFragment extends Fragment {
public ForecastFragment() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String[] data={
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
};
ArrayAdapter<String> adapter;
View rootView=inflater.inflate(R.layout.list_item_forecast,container,false);
ListView listView =(ListView)rootView.findViewById(R.id.listview);
List<String> listData=new ArrayList<String>(Arrays.asList(data));
adapter=new ArrayAdapter<String>(
getActivity(),R.layout.list_item_forecast,R.id.textView,listData);
listView.setAdapter(adapter);
return rootView;
}
}
你不能只通过调用new来实例化一个片段,你必须将它添加到堆栈中:
getFragmentManager()
.beginTransaction()
.add(R.id.container, new ForecastFragment(), "fragment_tag")
.commit();
其中 R.id.container 是布局中用于保存片段的容器(通常是 FrameLayou)。
在你的 MainActivity layout file
中,你应该有一个 FrameLayout
来包含你的片段。
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
现在在您的 MainActivity
class 中,您将像这样实例化您的 Fragment :
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new ForecastFragment(), ForecastFragment.class.getSimpleName()).commit();
您可以在 MainActivity
class 中的任何位置实例化上述片段。在您的情况下,您应该在 MainActivity's onCreate()
如果不想使用Android支持版本库,可以使用:
getFragmentManager().beginTransaction()
.add(R.id.fragment_container, new ForecastFragment(), ForecastFragment.class.getSimpleName().commit();