java - 无法转换 android.app.fragment

标签 java android android-fragments android-support-library

我看过其他帖子,它们都表明主机 Activity java 文件没有扩展 android.support.v4.app.Fragment。但是,我不知道如何使托管java文件扩展android.support.v4.app.Fragment。 我尝试将依赖项添加到 gradle 文件,但这也不起作用。

这是托管 Activity fragment :

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import course.examples.fragmentstaticlayout.TitlesFragment.ListSelectionListener;

public class QuoteViewerActivity extends Activity implements ListSelectionListener{

    public static String[] mTitleArray;
    public static String[] mQuoteArray;
    private QuotesFragment mDetailsFragment;

    private static final String TAG = "QuoteViewerActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mTitleArray = getResources().getStringArray(R.array.Titles);
        mQuoteArray = getResources().getStringArray(R.array.Quotes);

        setContentView(R.layout.main);

        mDetailsFragment = (QuotesFragment) getFragmentManager().findFragmentById(R.id.details);
    }

有问题的行是代码 fragment 的最后一行。这是我的 QuotesFragment。

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class QuotesFragment extends Fragment {

    private TextView mQuoteView = null;
    private int mCurrIdx = -1;
    private int mQuoteArrayLen;

    private static final String TAG = "QuotesFragment";

    public int getShownIndex() {
        return mCurrIdx;
    }

    public void showQuoteAtIndex(int newIndex) {
        if (newIndex < 0 || newIndex >= mQuoteArrayLen)
            return;
        mCurrIdx = newIndex;
        mQuoteView.setText(QuoteViewerActivity.mQuoteArray[mCurrIdx]);
    }

    @Override
    public void onAttach(Context context){
        Log.i(TAG, getClass().getSimpleName() + ":entered onAttach()");

        super.onAttach(context);

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.i(TAG, getClass().getSimpleName() + ":entered onCreate()");
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.quote_fragment, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mQuoteView = (TextView) getActivity().findViewById(R.id.quoteView);
        mQuoteArrayLen = QuoteViewerActivity.mQuoteArray.length;

    }

假设我对主机 Activity 不扩展 support.v4 的看法是正确的,我该怎么做?

最佳答案

这是因为您尝试将 Fragment 转换为 SupportFragment

您的QuotesFragment正在扩展SupportFragment,并且在转换时您尝试使用FragmentManager和fragment返回Fragment,而不是supportFragment .

尝试使用 geSupportFragmentManager 代替 getFragmentManager

此外,您应该为您的 QuoteViewerActivity 扩展 AppCompatActivity 或 FragmentActivity 而不是 Activity

Here is similar question

关于java - 无法转换 android.app.fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234414/

相关文章:

android - 使用 fragment 中的 Facebook 登录无法正常工作

java - 将模拟委托(delegate)给单独的类

Android Firebase Google 身份验证仅在从单台计算机运行时有效

android - 在 android 中到达 gps 位置时启动应用程序 Activity

Android Google maps v2 错误同时膨胀 fragment

android - 修复抽屉导航标题更改方向更改?

Java同步问题

java - 如何启用ListView的多选模式?

java - 简单 AsyncTask - 返回值 null

android - 如何将 Mailchimp 与 Ionic 应用程序集成?