1

ユーザーが時間を選択できるように、ピッカーを使用しようとしています。対応する Android XML を使用して 1 つの FragmentActivity を作成します。FragmentActivity は次のとおりです。

public class MainActivity extends FragmentActivity{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TimePickerFragment tpf = new TimePickerFragment();
    tpf.getFragmentManager();

}


public static class TimePickerFragment  extends DialogFragment implements TimePickerDialog.OnTimeSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
 final Calendar c = Calendar.getInstance();
 int hour = c.get(Calendar.HOUR_OF_DAY);
 int minute = c.get(Calendar.MINUTE);

 return new TimePickerDialog(getActivity(), this, hour,minute,DateFormat.is24HourFormat(getActivity()));
}

 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
   // Do something with the time chosen by the user 
 }

 public void showTimePickerDialog(View v) {
   DialogFragment newFragment = new TimePickerFragment ();
   newFragment.show(getFragmentManager(), "timePicker");
 }

}
}

XML は次のとおりです。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

  <Button 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content"
   android:text="@string/hello_world" 
   android:onClick="TimePickerFragment " />

</RelativeLayout>

コードはhttp://developer.android.com/guide/topics/ui/controls/pickers.htmlから取得されました。

さて、問題は、日付のピッカーが表示されないことです。白い画面を表示するだけです。私は何を間違っていますか?

PS 私が行った唯一の変更は、getSupportFragmentManager() の代わりに getFragmentManager() を使用することです。そして、これが最後のものを使用しているときにエラーが発生する理由です。

4

2 に答える 2

2

FragmentActivityはサポート ライブラリの一部であるため、それを拡張する場合は、これを使用する必要がありますgetSupportFragmentManager()。それを行ったときにエラーが発生した場合は、エラーを投稿してください。

于 2012-10-27T20:36:33.240 に答える
2

あなたのandroid:onClick属性は正しくありません。xml は次のようになります。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="showTimePickerDialog"
        android:text="Pick Time" />

</RelativeLayout>

showTimePickerDialogユーザーが をクリックすると呼び出されるようになりましたButton。このメソッドは にあるはずですMainActivity

また、 を呼び出して使用するレイアウトを設定する必要がありますsetContentViewMainActivity次のようになります (私は含めていませんTimePickerFragment):

public class MainActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showTimePickerDialog(View v) {
        DialogFragment newFragment = new TimePickerFragment();
        newFragment.show(getSupportFragmentManager(), "timePicker");
    }
    public static class TimePickerFragment extends android.support.v4.app.DialogFragment implements
        TimePickerDialog.OnTimeSetListener {
        ...
    }

}
于 2012-10-27T20:36:38.400 に答える