Я нашел несколько предположительно работающих примеров, каждый из которых немного отличается от другого, но, что бы я ни пытался реализовать, я получаю ту же ошибку компилятора. Вот код для DialogFragment
. О проблемах не сообщается здесь.
РЕДАКТИРОВАТЬ: Я на самом деле кодировал Пользовательский DialogFragment в моем коде после публикации. Это было бы проблемой, но на самом деле это не так. Я прошу прощения.
public class
Пользовательский DialogFragment extends DialogFragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_sample_dialog, container, false);
getDialog().setTitle("dialog");
return v;
}
}
}
Я сделал btn
static
. Нет разницы. Я переместил код из onClick
в onCreate
. Нет разницы. Заставил мою деятельность продлить FragmentActivity
. Независимо от того, что я делаю, я получаю эту ошибку в строке с ****** ниже:
cannot resolve method 'show(android.app.FragmentManager, java.lang.String)'
код для Activity
:
public class CustomDialogActivity extends Activity
{
Button btn ;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_sample_dialog);
btn = new Button(this);
btn = findViewById(R.id.dismiss);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
FragmentManager fm = getFragmentManager();
CustomDialogFragment dialogFragment = new CustomDialogFragment();
dialogFragment.show(fm, "Sample Fragment"); // **********
}
});
}
}
Что мне делать? Большая часть кода поступает с одной веб-страницы или другой или другой. Вы могли бы подумать, что я могу заставить его бежать.
Если я удаляю Custom
с обеих сторон оператора над ******, он компилируется, но тогда это уже не МОЙ CustomDialog
, и диалог все равно не отображается. (Если я удаляю Custom
только с одной стороны, я получаю ошибку компилятора. Сбой приведения.)
Если я использую getSupportFragmentManager()
вместо fm
в строке с ******, ошибки не будет, но диалоговое окно не появится.
Я явно потерян.
P.S. Вот build.gradle
для app
; xml
следует, но, конечно, это не проблема:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.dslomer64.customdialogactivity"
minSdkVersion 23
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
simple_dialog_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:padding="10dp"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lorem ipsum dolor sit amet..."
android:textSize="20dp" />
<Button
android:id="@+id/dismiss"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
</LinearLayout>