在同一个片段中实现多个事件侦听器-Android



我有一个片段,它由一个微调器和一个按钮组成。您可以使用微调器从四个选项中选择一个,然后按钮将带您进入下一个活动。

为了实现微调器,我需要在Fragment上实现onItemSelectedListener,但要使用按钮,我需要实现onClickListener。但我不能两者都做???我本以为这是一件非常简单的事情,而且在一个视图上有多个不同的事件侦听器的需求必须是常见的,那么你如何实现这一点呢?

这是我正在使用的代码:-

公共类FragmentTypeSelect扩展Fragment实现OnItemSelectedListener{

@Override
public View onCreateView(LayoutInflater inflater,
        ViewGroup container, Bundle savedInstanceState){
    // set the view so that it can be referenced
    View theView = inflater.inflate(R.layout.fragment_type_select, 
            container,false);
    // set OnClickListener for the button
    setUpClickListener(theView,R.id.but_select);

    //===============================
    // NEW TYPE SPINNER
    //===============================
    Spinner spinner = (Spinner) theView.findViewById(R.id.new_type_spinner);
    spinner.setOnItemSelectedListener((OnItemSelectedListener) this);
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), 
            R.array.types_array, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);
    return theView;
}
public void onItemSelected(AdapterView<?> parent, View view,
        int pos, long id)
{
    TextView headingText = (TextView)getView().findViewById(R.id.new_diet_type_text_heading);
    TextView detailText = (TextView)getView().findViewById(R.id.new_diet_type_text_detail);
    if (pos == 0)   
    {
        headingText.setText(R.string.heading_type_1);
        detailText.setText(R.string.detail_type_1);
    }
    if (pos == 1)   
    {
        headingText.setText(R.string.heading_type_2);
        detailText.setText(R.string.detail_type_2);
    }
    if (pos == 2)
    {
        headingText.setText(R.string.heading_type_3);
        detailText.setText(R.string.detail_type_3);
    }
    if (pos == 3) 
    {
        headingText.setText(R.string.heading_type_4);
        detailText.setText(R.string.detail_type_4);
    }
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
}

public void onClick(View view){
    Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_LONG).show();
}
private void setUpClickListener(View theView, int childViewID) {
    View childView = theView.findViewById(childViewID);
    childView.setOnClickListener((OnClickListener) this);
}

}

起初,我只是把旋转器放进去,让它工作得很好。然后,我尝试在onCreateView中放入带有设置OnClickListener的按钮函数,并添加额外的onClick和setUpClickListener方法。这正是我在其他地方所做的,但在其他情况下,我没有其他事件要处理,并使类实现了onClickListener。Java不支持多个接口实现(据我所知),因此我提出了这个问题。

希望你能帮忙。我可能有点胖,但我对整个OO和Android还是很陌生。

你可以做:

public class FragmentTypeSelect extends Fragment 
        implements OnItemSelectedListener, OnClickListener {
   public class Home extends AppCompatActivity  implements ImageAdapter.OnItemClickListener ,Filterable {

然后点击红色灯泡并实现该方法。可以通过用逗号分隔接口来实现多个接口。

相关内容

  • 没有找到相关文章

最新更新