2

Решил попробовать добавить в приложение лицензии. Следовал этой инструкции: ссылка на инструкцию

Всё сделал как написано, но вот 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();
 }
}
задан 25 июл. 2018 в 13:19
10
  • Метод getFragmentManager() у вас объявлен? Судя по коду ошибки нет. Commented 25 июл. 2018 в 13:31
  • @Anamnian Хм... Нет. А как его объявить? Что-то в инструкции не было ничего про это написано. Commented 25 июл. 2018 в 13:35
  • Где находится Ваш метод displayLicensesDialogFragment()? в файле активити? Commented 25 июл. 2018 в 13:35
  • 1
    Активити отнаследуйте от AppCompatActivity. Commented 25 июл. 2018 в 13:53
  • 1
    InformationActivity extends AppCompatActivity Commented 25 июл. 2018 в 14:02

1 ответ 1

4

Используйте вместо getFragmentManager суппортный менеджер - getSupportFragmentManager.

UPD:

public class InformationActivity extends Activity замените на public class InformationActivity extends AppCompatActivity

ответ дан 25 июл. 2018 в 13:39
10
  • getSupportFragmentManager выделился красным пишет: Cannot resolve method 'getSupportFragmentManager()' Commented 25 июл. 2018 в 13:41
  • 2
    Проверьте импорт в классе LicensesDialogFragment: должен быть import android.support.v4.app.DialogFragment. Вы наверное импортнули import android.app.DialogFragment (не из суппортной) Commented 25 июл. 2018 в 13:44
  • Импортировал всё что можно, включая: import android.support.v4.app.FragmentActivity;, import android.support.v4.app.FragmentManager; и import android.support.v4.app.DialogFragment; Commented 25 июл. 2018 в 13:48
  • 1
    public class LicensesDialogFragment extends DialogFragment И также проверьте чтобы активити наследовалось от активити суппортной Commented 25 июл. 2018 в 13:54
  • 2
    public class InformationActivity extends Activity замените на public class InformationActivity extends AppCompatActivity Commented 25 июл. 2018 в 14:04

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.