猿问

将 Activity 转换为 Fragment

我是 Android 新手,我正在尝试将其Activity变成一个,Fragment但我不知道如何解决错误。


当我将其更改为 a 时,Fragment我会收到很多红色代码setContentView、findViewById、 和getMenuInflater。我知道这些可能是红色的,因为它们是用来做Activities什么的,但我不确定它们要改成什么。


    import android.os.Bundle;

    import android.support.v4.app.Fragment;

    import android.support.v7.app.AppCompatActivity;

    import android.support.v7.widget.LinearLayoutManager;

    import android.support.v7.widget.RecyclerView;

    import android.view.Menu;

    import android.view.MenuItem;


    public class LocationsFragment extends Fragment {


    RecyclerView recyclerView;

    RecyclerView.LayoutManager layoutManager;

    RecyclerView.Adapter adapter;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_card_demo);

        // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

        // setSupportActionBar(toolbar);


        recyclerView =

                (RecyclerView) findViewById(R.id.recycler_view);


        layoutManager = new LinearLayoutManager(this);

        recyclerView.setLayoutManager(layoutManager);


        adapter = new RecyclerAdapter();

        recyclerView.setAdapter(adapter);

    }


    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.menu_card_demo, menu);

        return true;

    }


    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        // Handle action bar item clicks here. The action bar will

        // automatically handle clicks on the Home/Up button, so long

        // as you specify a parent activity in AndroidManifest.xml.

        int id = item.getItemId();


        //noinspection SimplifiableIfStatement

        if (id == R.id.action_settings) {

            return true;

        }


        return super.onOptionsItemSelected(item);

    }

}


FFIVE
浏览 280回答 1
1回答

鸿蒙传说

设置内容视图()Fragments 中没有这样的方法。相反,您覆盖onCreateView()并从中返回一些视图。您可以使用传入的内容来LayoutInflater扩大您通常传递给 的布局 ID setContentView(),然后将其返回。findViewById()片段没有findViewById()方法。但是,在onCreateView()返回后的任何时间,您都可以改用getView().findViewById(). 在里面onCreateView(),如果你命名你的膨胀视图,root你可以调用root.findViewById(). 在 之前onCreateView(),无法查找任何视图(因为它们尚未膨胀)。getMenuInflater()片段使用不同的签名onCreateOptionsMenu()。它看起来像这样:@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {    // ...}您可以使用传入的MenuInflater而不是调用getMenuInflater().把所有这些放在一起,这就是你所拥有的:public class LocationsFragment extends Fragment {    RecyclerView recyclerView;    RecyclerView.LayoutManager layoutManager;    RecyclerView.Adapter adapter;    @Nullable    @Override    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View root = inflater.inflate(R.layout.activity_card_demo, container, false);        recyclerView = (RecyclerView) root.findViewById(R.id.recycler_view);        layoutManager = new LinearLayoutManager(getContext());        recyclerView.setLayoutManager(layoutManager);        adapter = new RecyclerAdapter();        recyclerView.setAdapter(adapter);        return root;    }    @Override    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {        inflater.inflate(R.menu.menu_card_demo, menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答