【问题标题】:FindViewById giving Unreachable statement error in Fragment activity [duplicate]FindViewById 在 Fragment 活动中给出 Unreachable 语句错误 [重复]
【发布时间】:2017-11-30 10:48:50
【问题描述】:

我对基于 Fragment 的活动还很陌生。我正在开发 CollapsingToolbarLayout 内的可折叠列表视图。

在这里,我在 java 文件中遇到了 Unreachable statement 错误。无法摆脱它。

我的代码 -

public class MenuActivity extends android.support.v4.app.Fragment {

    ExpandableListAdapter listAdapter;
    ExpandableListView expListView;
    List<String> listDataHeader;
    HashMap<String, List<String>> listDataChild;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.activity_booktable, container, false);

        // get the listview
        expListView = (ExpandableListView) container.findViewById(R.id.lvExp);

        // preparing list data
        prepareListData();

        listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);

        // setting list adapter
        expListView.setAdapter(listAdapter);

        // Listview Group click listener
        expListView.setOnGroupClickListener(new OnGroupClickListener() {

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v,
                                        int groupPosition, long id) {
                // Toast.makeText(getApplicationContext(),
                // "Group Clicked " + listDataHeader.get(groupPosition),
                // Toast.LENGTH_SHORT).show();
                return false;
            }
        });

        // Listview Group expanded listener
        expListView.setOnGroupExpandListener(new OnGroupExpandListener() {

            @Override
            public void onGroupExpand(int groupPosition) {
                Toast.makeText(getActivity().getApplicationContext(),
                        listDataHeader.get(groupPosition) + " Expanded",
                        Toast.LENGTH_SHORT).show();
            }
        });

        // Listview Group collasped listener
        expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

            @Override
            public void onGroupCollapse(int groupPosition) {
                Toast.makeText(getActivity().getApplicationContext(),
                        listDataHeader.get(groupPosition) + " Collapsed",
                        Toast.LENGTH_SHORT).show();

            }
        });

        // Listview on child click listener
        expListView.setOnChildClickListener(new OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                                        int groupPosition, int childPosition, long id) {
                // TODO Auto-generated method stub
                Toast.makeText(
                        getActivity().getApplicationContext(),
                        listDataHeader.get(groupPosition)
                                + " : "
                                + listDataChild.get(
                                listDataHeader.get(groupPosition)).get(
                                childPosition), Toast.LENGTH_SHORT)
                        .show();
                return false;
            }
        });
    }

    /*
     * Preparing the list data
     */
    private void prepareListData() {
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Adding child data
        listDataHeader.add("South Indian");
        listDataHeader.add("Quick Bites");
        listDataHeader.add("Soups");

        // Adding child data
        List<String> SouthIndian = new ArrayList<String>();
        SouthIndian.add("Kara Bath");
        SouthIndian.add("Chow Chow Bath");
        SouthIndian.add("2 Idli 1 Vada");
        SouthIndian.add("Rava Idli");
        SouthIndian.add("Curd Vada");
        SouthIndian.add("Masala Dosa");

        List<String> QuickBites = new ArrayList<String>();
        QuickBites.add("Veg Sandwich");
        QuickBites.add("Veg Toast Sandwich");
        QuickBites.add("Bread Butter Jam");
        QuickBites.add("Bread Jam");
        QuickBites.add("Pakoda");
        QuickBites.add("Masala Puri");

        List<String> Soups = new ArrayList<String>();
        Soups.add("Tomato Soup");
        Soups.add("Sweet corn Soup");
        Soups.add("Veg Soup");
        Soups.add("Veg Schezwan Soup");
        Soups.add("Veg Noodles Soup");

        listDataChild.put(listDataHeader.get(0), SouthIndian); // Header, Child data
        listDataChild.put(listDataHeader.get(1), QuickBites);
        listDataChild.put(listDataHeader.get(2), Soups);
    }
}

如何修复 expListView = (ExpandableListView) container.findViewById(R.id.lvExp); 行的错误并运行此代码?

【问题讨论】:

  • 在oncreate方法的末尾写return语句

标签: android android-fragments


【解决方案1】:

return inflater.inflate(R.layout.activity_booktable, container, false)移动到方法onCreateView()的末尾

【讨论】:

    【解决方案2】:

    您在 onCreateView 中的第一行已经返回了视图,因此其余代码不会执行:

    return inflater.inflate(R.layout.activity_booktable, container, false);
    

    您必须将其替换为

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        
        View myView = inflater.inflate(R.layout.activity_booktable, container, false);
        ...
        return myView;
    }
    

    然后最好在此视图上执行 findViewById,例如

    expListView = (ExpandableListView) myView.findViewById(R.id.lvExp);
    

    【讨论】:

    • 需要做什么才能使这段代码正常工作?
    • @AbhishekD 这都在我的回答中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2021-07-17
    • 2016-07-25
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    相关资源
    最近更新 更多