我看过其他帖子,它们都表明主机 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
关于java - 无法转换 android.app.fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234414/