Решил попробовать добавить в приложение лицензии. Следовал этой инструкции: ссылка на инструкцию
Всё сделал как написано, но вот 5-ый пункт инструкции всё никак не работает. Пишет:
Ошибка: Cannot resolve method 'show(android.app.FragmentManager, java.lang.String)'
Никак не получается решить проблему. Инструкция начала 2016-го. Может в 2018-ом уже нужно писать как-то по другому?
Вопрос: как написать чтобы ошибки не возникало?
UPD1:
Если заменить getFragmentManager() на getSupportFragmentManager(), то возникает такая ситуация:
ошибка
Ошибка: Cannot resolve method 'getSupportFragmentManager()'
UPD2:
В LicensesDialogFragment:
import android.app.AlertDialog;
import android.app.Dialog;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.DialogFragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.webkit.WebView;
public class LicensesDialogFragment extends DialogFragment
{
public static LicensesDialogFragment newInstance()
{
return new LicensesDialogFragment();
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
WebView view = (WebView) LayoutInflater.from(getActivity()).inflate(R.layout.dialog_license, null);
view.loadUrl("file:///android_asset/open_source_licenses.html");
return new AlertDialog.Builder(getActivity(), R.style.Theme_AppCompat_Light_Dialog_Alert)
.setTitle(getString(R.string.action_licenses))
.setView(view)
.setPositiveButton(android.R.string.ok, null)
.create();
}
}
В Activity с кнопкой:
import android.app.Activity;
import android.app.AlertDialog;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.DialogFragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class InformationActivity extends Activity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.app_information);
Button ShowLicensesBtn = (Button)findViewById(R.id.btn_licensesID);
ShowLicensesBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
displayLicensesDialogFragment();
}
});
}
private void displayLicensesDialogFragment() {
LicensesDialogFragment dialog = LicensesDialogFragment.newInstance();
dialog.show(getFragmentManager(), "LicensesDialog");
}
@Override
public void onBackPressed()
{
Intent StartMainActivityIntent = new Intent(InformationActivity.this, MainActivity.class);
startActivity(StartMainActivityIntent);
finish();
}
}
1 ответ 1
Используйте вместо getFragmentManager суппортный менеджер - getSupportFragmentManager.
UPD:
public class InformationActivity extends Activity замените на public class InformationActivity extends AppCompatActivity
-
getSupportFragmentManagerвыделился красным пишет: Cannot resolve method 'getSupportFragmentManager()'Mikhail– Mikhail2018年07月25日 13:41:54 +00:00Commented 25 июл. 2018 в 13:41 -
2Проверьте импорт в классе LicensesDialogFragment: должен быть import android.support.v4.app.DialogFragment. Вы наверное импортнули import android.app.DialogFragment (не из суппортной)RomanK.– RomanK.2018年07月25日 13:44:11 +00:00Commented 25 июл. 2018 в 13:44
-
Импортировал всё что можно, включая:
import android.support.v4.app.FragmentActivity;,import android.support.v4.app.FragmentManager;иimport android.support.v4.app.DialogFragment;Mikhail– Mikhail2018年07月25日 13:48:08 +00:00Commented 25 июл. 2018 в 13:48 -
1public class LicensesDialogFragment extends DialogFragment И также проверьте чтобы активити наследовалось от активити суппортнойRomanK.– RomanK.2018年07月25日 13:54:06 +00:00Commented 25 июл. 2018 в 13:54
-
2
public class InformationActivity extends Activityзамените наpublic class InformationActivity extends AppCompatActivityRomanK.– RomanK.2018年07月25日 14:04:30 +00:00Commented 25 июл. 2018 в 14:04
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопрос
getFragmentManager()у вас объявлен? Судя по коду ошибки нет.InformationActivity extends AppCompatActivity