私はスピナーとボタンからなる断片を持っています。スピナーで4つのオプションのいずれかを選択すると、ボタンが次のアクティビティに移動します。同じフラグメント内に複数のイベントリスナーを実装する - Android
スピナーを実装するには、フラグメントのonItemSelectedListenerを実装する必要がありますが、ボタンを使用するにはonClickListenerを実装する必要があります。 しかし、私は両方を行うことはできませんか? これは本当に簡単なことだと思っていましたが、ビュー上に複数の異なるイベントリスナーを配置する必要があります。これはどのように実装しますか?
パブリッククラスFragmentTypeSelect断片 実装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にはかなり新しいです。
あなたが行うことができます
あなたは両方を行うことができます。コードを投稿し、問題をより詳しく説明してください。 –
レオ、私は今、上記のコードを掲載しました....ありがとう – RobT