Я довольно новичок в Android и получил кучу исходного кода клиента на работе, чтобы исправить. Диалог -фрагмент, который я пытаюсь создать, не останется открытым. Когда я выхожу через него, он открывается, а затем снова закрывается, когда вызывается newFragement.show().DialogFragment не отображается, он быстро открывается и закрывается
My 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>
Это не нравится «андроид: имя =„com.ila.tax_shield.fragments.ShowUpgradeDialogFragment“», и я, не понимая, почему
Заранее спасибо за вашу помощь!
Убедитесь, что вы импортируете из правильного пакета при использовании 'FragmentActivity' (' android.support.v4.app.FragmentActivity') – Emmanuel
Когда я это делаю, ему не нравится его часть поддержки. Но разве он не может работать с помощью DialogFragment? Я немного отредактировал его, чтобы добавить некоторый дополнительный исходный код. – craned
Вы хотите показать «ShowUpgradeDialogFragment», встроенный в макет или как диалог? Кроме того, используйте 'class =" com.ila.tax_shield.fragments.ShowUpgradeDialogFragment "' вместо 'android: name'. – Luksprog