Приложение вылетает при попытке переключения между вкладками - PullRequest
0 голосов
/ 01 октября 2018

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

Код кнопки речи (обратите внимание, что моя кнопка микрофона находится в onCreateView для моего фрагмента, а не в отдельном методе onClickListener), и мое приложение падает только при добавлении следующего кода ...: -

microphonebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());

                if (intent.resolveActivity(getActivity().getPackageManager()) != null)  {
                    startActivityForResult(intent, 10);
                } else {
                    Toast.makeText(getActivity().getApplicationContext(), "Your device does not support speech input !",Toast.LENGTH_SHORT).show();
                }

            }
        });

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (resultCode) {
            case 10:
                if (resultCode == Activity.RESULT_OK && data != null) {
                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    textView.setText(result.get(0));

                }
                break;
        }

    }

Logcat, который показывает, как только приложение перестало работать: -

10-01 23:39:37.875 27828-27828/project.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: project.myapplication, PID: 27828
    java.lang.ClassCastException: android.support.v7.widget.AppCompatImageButton cannot be cast to android.widget.Button
        at project.myapplication.Translator.onCreateView(Translator.java:101)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
        at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)
        at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)
        at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630)
        at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:611)
        at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2191)
        at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1164)
        at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1157)
        at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1127)
        at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1426)
        at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1536)
        at android.view.View$PerformClick.run(View.java:24770)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

1 Ответ

0 голосов
/ 01 октября 2018

Ошибка говорит о том, что вы преобразуете AppCompatImageButton в Button. Проверьте свой код, в котором вы связываете кнопку с xml.

Button button = findViewById(your_button_id);

Убедитесь, что она приведена правильно.Проверьте эту ссылку для получения дополнительной информации - ClassCastException

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...