Android:添加一个简单的片段

我对Android应用程序很新,所以我希望能在这里find一些帮助。 我已经在这里search了我的问题,发现了一些东西,但是这不起作用。

我想添加一个片段到FrameLayout,但它不工作。 我的目标是创build一个始终存在的框架(/框架?),用户可以与它进行交互,在框架内的一个特定的“窗口”我想显示的页面/片段,共五个,并beeing能够切换在任何时候的页面/片段,所以我有一个总是存在的框架,并在这个dynamic变化的页面。 但现在我坚持在一开始就添加一个简单的片段到这个框架(这已经工作顺便说一句)。

这是所有相关的代码我希望:错误发生在MainActivity.java(getSupportFragmentManager()。beginTransaction()。add(R.id.mainFrame,homeFragment).commit();)它告诉我:

错误:(25,55)错误:找不到适合的方法add(int,HomeFragment)方法FragmentTransaction.add(Fragment,String)不适用(参数不匹配; int不能转换为Fragment)方法FragmentTransaction.add(int,片段)不适用(参数不匹配; HomeFragment不能转换为片段)

我已经试图把碎片扔到碎片上,但是这并没有奏效。

MainActivity.java

import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { FragmentTransaction fragmentTransaction; HomeFragment homeFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); homeFragment = new HomeFragment(); **getSupportFragmentManager().beginTransaction().add(R.id.mainFrame, homeFragment).commit();** } 

activity_main.xml中

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" tools:ignore="MergeRootFrame" > <FrameLayout android:id = "@+id/mainFrame" android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_marginBottom = "@dimen/bottom_Main_Tabs"> </FrameLayout> [...] </FrameLayout> 

fragment_home.xml

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.HomeFragment"> // it is not really com.example... <!-- TODO: Update blank fragment layout --> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_blank_fragment" /> </FrameLayout> 

HomeFragment.java(所有东西都是自动生成的,但是我已经删除了一些东西)

 public class HomeFragment extends Fragment { private OnFragmentInteractionListener mListener; public static HomeFragment newInstance() { HomeFragment fragment = new HomeFragment(); return fragment; // not really neccessary, because it Have shortened it } public HomeFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_home, container, false); } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnFragmentInteractionListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } public interface OnFragmentInteractionListener { // TODO: Update argument type and name public void onFragmentInteraction(Uri uri); } } 

有人能帮帮我吗?

约翰

Related of "Android:添加一个简单的片段"

您正在将来自支持库的类和新类仅用于较新版本的操作系统。

例如,您导入android.app.FragmentTransaction (可用于API 11 +),但调用getSupportFragmentManager().beginTransaction()返回android.support.v4.app.FragmentTransaction

您需要导入android.support.v4.app.FragmentTransaction ,并确保您的HomeFragment扩展android.support.v4.app.Fragment而不是android.app.Fragment