Необратимые типы в фрагментах Android - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в программировании Android и пытаюсь создать приложение для умножения в Android Studio, чтобы помочь детям изучать базовые таблицы умножения с использованием фрагментов.Я получаю следующую ошибку.

Inconvertible types; cannot cast 'android.app.Fragment' to 
'com.example.multiplication_with_fragments.FragmentTwo'

Меня не так много учили по теме фрагментов, и я следовал вместе с кодом из примера в классе.Ошибка выдается в первой строке метода onButtonClick в приведенном ниже коде.

public class MainActivity extends AppCompatActivity implements FragmentOne.ToolbarListener
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onButtonClick(int userAnswer, int correctAnswer)
    {
        FragmentTwo fragment = (FragmentTwo) 
             getFragmentManager().findFragmentById(R.id.fragment2);

        fragment.displayMessage(userAnswer, correctAnswer);
    } 

После исправления ошибки в вышеприведенном коде программа не запустится.При попытке запустить программу возникает фатальное исключение, и программа не будет отображаться на устройстве.

16363-16363/com.example.multiplication_with_fragments 
E/AndroidRuntime: FATAL EXCEPTION: main

at com.example.multiplication_with_fragments.MainActivity.
onCreate(MainActivity.java:12)

строка 12 показана ниже

setContentView(R.layout.activity_main);

Если есть ещеТребуется объяснение или, если требуется больше кода, дайте мне знать, и я опубликую его.

Ответы [ 3 ]

0 голосов
/ 02 марта 2019

Может быть ваша версия фрагмента, если V1 и ваш getFragmentManager () равен V4, если она не соответствует.

ваша версия фрагмента должна быть такой, как показано ниже.

import android.support.v4.app.Fragment;

    public class MyBaseFragment extends Fragment {

        public ... {
           needs Fragment  v4 Fragment
                ....

        }

    }
0 голосов
/ 02 марта 2019

во FragmentTwo вы импортировали этот тип фрагмента

import android.app.Fragment;

Поэтому удалите строку выше и импортируйте ниже тип фрагмента

import android.support.v4.app.Fragment;
0 голосов
/ 02 марта 2019

Заменить

FragmentTwo fragment = (FragmentTwo)getFragmentManager().findFragmentById(R.id.fragment2);

на

FragmentTwo fragment = (FragmentTwo) getSupportFragmentManager().findFragmentById(R.id.fragment2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...