1

私は Android にかなり慣れていないので、クライアントのソース コードを大量に修正するように指示されました。作成しようとしている DialogFragment が開いたままになりません。それをステップ実行すると、 newFragement.show() が呼び出されるとすぐに開き、再び閉じます。

私の onCreateDialog は、現在の targetSdk が 8 であると言い続けていますが、何度も 11 に変更したり、Android Studio を再起動したりしましたが、それでも間違っていると言っています。

これまでのところ、これに関連して見つけた他のすべての投稿は、私の質問に答えていません。FragmentActivity を動作させることができませんでした。これが私のコードです:

ShowUpgradeDialogFragment クラス:

public class ShowUpgradeDialogFragment extends DialogFragment {

public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    builder.setMessage(R.string.dialog_builder_message)
            .setPositiveButton(R.string.dialog_builder_positive, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // upgrade
                }
            })
            .setNegativeButton(R.string.dialog_builder_negative, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // User cancelled the dialog
                }
            });//*/
    System.out.println ("hello");
    // Create the AlertDialog object and return it
    AlertDialog dialog = builder.create();
    return dialog;
    }
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.ila.tax_shield"
      android:versionCode="18" android:versionName="3.2.4">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18"/>
<fragment android:name=".ShowUpgradeDialogFragment"
              android:label="@string/app_name"
              android:windowIsFloating="true"
              android:background="@android:color/transparent"
              android:screenOrientation="portrait">
</fragment>

// remaining manifest

</manifest>

私のonCreateメソッド:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    DialogFragment newFragment = new ShowUpgradeDialogFragment();
    newFragment.show(getFragmentManager(), "dialog");

    // code

    finish() // wrong and was removed, which solved my bug
   }

display_update_message.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

<fragment class="com.ila.tax_shield.fragments.ShowUpgradeDialogFragment"
          android:id="@+id/display_update_message"
          android:layout_weight="1"
          android:layout_height="match_parent"
          android:layout_width="2dp"
          tools:layout="@layout/display_update_message" />

</LinearLayout>

「android:name="com.ila.tax_shield.fragments.ShowUpgradeDialogFragment"」が気に入らず、その理由がわかりません

よろしくお願いします。

4

1 に答える 1