gpt4 book ai didi

java - 无法转换 android.app.fragment

转载 作者:太空狗 更新时间:2023-10-29 16:33:25 25 4
gpt4 key购买 nike

我看过其他帖子,它们都暗示主机 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);
}

相关行是代码段的最后一行。这是我的 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,并且在转换时您正在尝试使用返回 Fragment 的 FragmentManager 和 fragment,而不是 supportFragment

尝试使用 geSupportFragmentManager 而不是 getFragmentManager

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

Here is similar question

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com