Java 无法强制转换android.app.fragment
我看过其他帖子,它们都表明主机活动java文件没有扩展android.support.v4.app.Fragment。但是,我不知道如何使宿主java文件扩展android.support.v4.app.Fragment。 我已经尝试将依赖项添加到gradle文件中,但也不起作用 以下是托管活动片段:Java 无法强制转换android.app.fragment,java,android,android-fragments,android-support-library,Java,Android,Android Fragments,Android Support Library,我看过其他帖子,它们都表明主机活动java文件没有扩展android.support.v4.app.Fragment。但是,我不知道如何使宿主java文件扩展android.support.v4.app.Fragment。 我已经尝试将依赖项添加到gradle文件中,但也不起作用 以下是托管活动片段: import android.app.Activity; import android.os.Bundle; import android.util.Log; import course.exam
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);
}
这一行是代码段的最后一行。这是我的引文片段
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;
}
导入android.content.Context;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
公共类QuotesFragment扩展了片段{
私有文本视图mQuoteView=null;
私有整数mCurrIdx=-1;
姆库特拉伦私人酒店;
私有静态最终字符串标记=“QuotesFragment”;
public int getShownIndex(){
返回mCurrIdx;
}
public void showQuoteAtIndex(int newIndex){
if(newIndex<0 | | newIndex>=mQuoteArrayLen)
返回;
mCurrIdx=newIndex;
mquteview.setText(quoteviewractivity.mqutearray[mCurrIdx]);
}
@凌驾
公共void-onAttach(上下文){
Log.i(标记,getClass().getSimpleName()+“:输入onAttach()”;
super.onAttach(上下文);
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
Log.i(标记,getClass().getSimpleName()+”:输入onCreate()”;
super.onCreate(savedInstanceState);
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(R.layout.quote_碎片,容器,假);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
mQuoteView=(TextView)getActivity().findViewById(R.id.quoteView);
mQuoteArrayLen=QuoteViewPractivity.mQuoteArray.length;
}
假设我对主机活动没有扩展support.v4的看法是正确的,我该如何做?尝试将
getFragmentManager()
更改为getSupportFragmentManager())
并扩展片段活动
而不是quoteView实践中的活动
这是因为您试图将片段
强制转换为支持片段
您的QuotesFragment
正在扩展SupportFragment
,在强制转换时,您尝试使用FragmentManager和fragment
,后者返回fragment,而不是SupportFragment
尝试使用geSupportFragmentManager
代替getFragmentManager
此外,您还应该扩展AppCompatActivity或FragmentActivity,而不是QuoteView活动
显然,您正在将新的API(13)与SupportPI混合使用……fx:getFragmentManager()
它不存在于旧的API中…如果你想支持比13更旧的API,你应该记住它对片段一无所知…还有基本的继承:android.app.Fragment
不是android.support.v4.app.Fragment
在AppCompatActivity和FragmentActivity之间有偏好差异吗City?意思是使用一个比另一个更好?用例不同,AppCompatiActivity是最新的东西。@jasonadams看到这个>>