Tôi có một đoạn bao gồm một nút xoay và một nút. Bạn chọn một trong bốn tùy chọn với spinner và sau đó nút sẽ đưa bạn đến hoạt động tiếp theo.Triển khai nhiều trình xử lý sự kiện trong cùng một đoạn - Android
Để triển khai trình quay, tôi cần triển khai onItemSelectedListener trên Phân đoạn nhưng sử dụng nút tôi cần để triển khai onClickListener. Nhưng tôi không thể làm cả hai ??? Tôi đã mong đợi điều này là một điều thực sự đơn giản và cần phải có nhiều Trình xử lý sự kiện khác nhau trên một Chế độ xem phải là phổ biến, vậy làm cách nào để bạn triển khai tính năng này?
Đây là mã mà tôi đang sử dụng: -
public class FragmentTypeSelect kéo dài Fragment cụ 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);
}
}
Ban đầu tôi chỉ có spinner trong và nhận được này làm việc tốt. Sau đó, tôi đã cố gắng đưa vào chức năng nút với OnClickListener được đặt trong onCreateView và thêm các phương thức onClick và setUpClickListener bổ sung. Đây chính xác là cách tôi đã thực hiện nó ở nơi khác nhưng trong các trường hợp khác, tôi đã không có các sự kiện khác để xử lý và đã thực hiện lớp thực hiện onClickListener. Java không hỗ trợ nhiều giao diện thực hiện (như tôi hiểu nó) và do đó câu hỏi của tôi.
Hy vọng bạn có thể trợ giúp. Tôi có thể là một chút dày nhưng tôi vẫn còn khá mới cho toàn bộ OO cũng như Android.
Bạn có thể làm cả hai. Hãy đăng mã của bạn và giải thích thêm về vấn đề của bạn. –
Leo, tôi hiện đã đăng mã ở trên .... Cảm ơn – RobT