1

そこでDialogFragment、アラートダイアログを表示するための.javaファイルを作成しました。ここのチュートリアルを使用して、リスト付きのAlertDialogを作成しました。

ContactList.javaファイルでこのフラグメントを参照するにはどうすればよいですか?チュートリアルからこれを行う方法であると私が理解したことは、うまくいかなかったようです。ContactList.javaファイルの以下のコードを使用してonClickイベントを実行しようとすると、の下に赤い波線が表示されgetSupportFragmentManager()ます。これが私がフラグメントのために持っているコードです:

public class StatusDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.choose_status);
    builder.setItems(R.array.status_choices,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dismiss();
                }
            });
    return builder.create();
}

}

関連するContactList.javaファイルコードは次のとおりです。

public class ContactList extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_contact_list);
    Intent intent = getIntent();


}
public void chooseStatus(View view) {
    DialogFragment newFragment = new StatusDialogFragment();
    newFragment.show(getSupportFragmentManager(), "statuschoice");
}

最後に、ダイアログを開きたいボタンのXMLコードを次に示します。

    <ImageButton
    android:id="@+id/status"  
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/status_available_icon"
    android:onClick="chooseStatus" />

御時間ありがとうございます。

4

1 に答える 1

2

FragmentActivity3.0未満のプラットフォーム用にコーディングしている場合は、互換性クラスを拡張する必要があります。

public class ContactList extends FragmentActivity implements OnClickListener {

そうでない場合は、に変更getSupportFragmentManager()しますgetFragmentManager()

また、を使用している場合は、サポートパッケージから互換性を拡張することを確認しFragmentActivityてください。StatusDialogFragmentDialogFragment

そうでない場合(つまり、3.0以降のみを対象としている場合)、DialogFragment拡張元のクラスがサポートパッケージのものではないことを確認してください。

于 2013-01-27T20:36:37.823 に答える