2017-11-09 18 views
-1

さまざまなEditTextにonClickメソッドを追加します。 DialogFragmentを開きます。今DialogFragmentを開いたビューのIDを取得する方法は?


public void eligeHora (View view){ 
     TimePickerFragment newFragment = new TimePickerFragment(); 
     newFragment.show(getFragmentManager(),"hadshads"); 
    } 

、DialogFragmentクラス内で私はのEditTextのIDを取得したい(多くがあります)をクリック。この例では、ID「hora」のEditTextを取得しますが、「汎用」にしたいと思います。


public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState){ 

     //Create and return a new instance of TimePickerDialog 
     return new TimePickerDialog(getActivity(),this, 0, 0, 
       true); 
    } 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
//Do something with the user chosen time 
     //Get reference of host activity (XML Layout File) TextView widget 
     EditText tv = getActivity().findViewById(R.id.hora); 

     tv.setText(String.valueOf(hourOfDay)+ " : " + 
       String.valueOf(minute) + "\n"); 
    } 

} 

どのように私は、ビューのIDがDialogFragmentを開くためにクリックされたのですか?この例では、特定のビューのID(R.id.hora)を使用しましたが、このフラグメントをメソッドがあるすべてのビューで使用できるようにしたいとします。eligeHora

+0

お望みのものは? –

+0

DialogFragmentを開いたビューのIDを取得します。 –

答えて

1

あなたがいないコンストラクタ経由ではなく、静的なメソッド使用してFragmentにIDを渡すことができます:あなたは

を書く必要があるだろう

public static TimePickerFragment instance(int viewId){ 
    TimePickerFragment fragment = new TimePickerFragment(); 
    Bundle b = new Bundle(); 
    b.putInt("KEY_ID", viewId); 
    fragment.setArguments(b); 
    return fragment; 
} 

代わりの

TimePickerFragment newFragment = new TimePickerFragment(); 

TimePickerFragment newFragment = TimePickerFragment.instance(myEditTextID); 

その後、あなたは次のようにIDを取得することができます。

@Override 
public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    int id = getArguments().getInt("KEY_ID"); 
    //... 
} 

しかし、それはFragmentの一部ではないFragmentViewの'fromにアクセスするためには良い考えではありませんので注意してください。 Activityと通信することを検討してください

1

もう1つの答えは基本的には正しい:setArguments()を使用してビューIDをTimePickerFragmentに渡すことができます。欠落しているのは、実際にクリックされたビューのIDを取得する方法だけです。

...

この方法にViewパラメータを、あなたのすべてのビューに属性を使用していると仮定すると、それらのそれぞれがあなたのeligeHora(View view)メソッドを使用すると、ユーザーがクリックした図です。だから、view.getId()eligeHora()の中に呼ぶことによって、クリックされたビューのIDを得ることができます。

関連する問題