JRs*_*Rsz 7 java android frame fragment android-fragments
我是Android应用程序的新手,所以我希望我能在这里找到一些帮助.我已经在这里搜索了我的问题并找到了一些东西,但这不起作用.
我想将一个片段添加到FrameLayout但它不起作用.我的目标是创建一个始终存在的框架(/ Framework?),用户可以与它进行交互,并在特定的"窗口"框架内部我要显示页面/片段,总共五个,并且能够切换任何时候的页面/片段,所以我有一个始终存在的框架,并在这个动态变化的页面内.但是现在我被困在一开始就向这个Frame添加了一个简单的片段(已经开始工作了.)
这是我希望的所有相关代码:错误发生在MainActivity.java(getSupportFragmentManager().beginTransaction().add(R.id.mainFrame,homeFragment).commit();),它告诉我:
错误:(25,55)错误:没有为add(int,HomeFragment)方法找到合适的方法FragmentTransaction.add(Fragment,String)不适用(参数不匹配; int不能转换为Fragment)方法FragmentTransaction.add(int, Fragment)不适用(参数不匹配; HomeFragment无法转换为Fragment)
我已经尝试将homeFragment转换为Fragment,但这不起作用.
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();**
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
有人能帮帮我吗?
约翰
2De*_*Dee 19
您正在混合支持库中的类和仅适用于较新版本操作系统的新类.
例如,您导入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.
| 归档时间: |
|
| 查看次数: |
6700 次 |
| 最近记录: |