如何在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();