gpt4 book ai didi

android - 在同一个 fragment 中实现多个事件监听器 - Android

转载 作者:可可西里 更新时间:2023-11-01 19:10:07 24 4
gpt4 key购买 nike

我有一个由微调器和按钮组成的 fragment 。您可以使用微调器选择四个选项之一,然后按钮会将您带到下一个 Activity 。

为了实现微调器,我需要在 Fragment 上实现 onItemSelectedListener,但要使用按钮,我需要实现 onClickListener。但我不能两者兼顾???我原以为这是一件非常简单的事情,并且在一个 View 上拥有多个不同的事件监听器的需求一定很常见,那么您如何实现呢?

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

公共(public)类 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 中使用 set OnClickListener 放入按钮函数,并添加额外的 onClick 和 setUpClickListener 方法。这正是我在其他地方所做的,但在其他情况下,我没有其他事件要处理,而是让类实现了 onClickListener。 Java 不支持多个接口(interface)实现(据我所知),因此我的问题。

希望能帮到你。我可能有点厚,但我对整个 OO 和 Android 仍然很陌生。

最佳答案

你可以这样做:

public class FragmentTypeSelect extends Fragment 
implements OnItemSelectedListener, OnClickListener {

关于android - 在同一个 fragment 中实现多个事件监听器 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18048513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com