使用多个按钮在片段中启动活动

时间:2017-06-19 18:18:07

标签: java android android-fragments fragment

我在Java编程方面还比较新,我想打开一个带有几个按钮不同活动的片段。但是,我总是在以下位置得到一个错误(......已在......中定义):

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)

另外在其他变种中,它不起作用,甚至还有更多错误。

以下是我片段的完整代码:

public DashboardFragment() {

}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);

    ImageButton button = (ImageButton) rootView.findViewById(R.id.stundenplanbtn);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), Stundenplan.class);
            startActivity(intent);


        }
    });

    return rootView;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);

    ImageButton button2 = (ImageButton) rootView.findViewById(R.id.vertretungsbtn);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), Vertretungsplan.class);
            startActivity(intent);


        }
    });

    return rootView;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);

    ImageButton button2 = (ImageButton) rootView.findViewById(R.id.essenbtn);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), Essen.class);
            startActivity(intent);


        }
    });

    return rootView;
}
}

2 个答案:

答案 0 :(得分:3)

你真正想要的是:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);

    ImageButton button = (ImageButton) rootView.findViewById(R.id.stundenplanbtn);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), Stundenplan.class);
            startActivity(intent);


        }
    });

    ImageButton button2 = (ImageButton) rootView.findViewById(R.id.vertretungsbtn);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), Vertretungsplan.class);
                startActivity(intent);


            }
        });

    return rootView;

}

此外,在Android特定的上下文中,由于您没有使用ImageButton类的任何特定方法,因此它并不是所有的ImageButton强制转换,因为它extends您可以使用的View课程:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);


    rootView.findViewById(R.id.stundenplanbtn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getActivity(), Stundenplan.class);
                startActivity(intent);


            }
        });

    rootView.findViewById(R.id.vertretungsbtn).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(getActivity(), Vertretungsplan.class);
                    startActivity(intent);


                }
            });

 return rootView;

}

请注意, only 这里没有创建button变量/引用,所以这只是一个小改进。但如果这让你感到困惑,那么你只需忽略并使用第一个。

答案 1 :(得分:0)

您在同一个类中使用相同的方法定义三次次,但只能使用具有相同名称的一个方法以及{{1}的方法} tag需要覆盖实际的超类方法,因此您不能只调用方法@Override并保留标记。

只需删除底部的两种方法。