当前位置: 首页 > 知识库问答 >
问题:

Android:添加一个简单片段

沙柏
2023-03-14

我对Android应用程序很陌生,所以我希望能在这里找到一些帮助。我已经在这里搜索了我的问题并找到了一些东西,但这不起作用。

我想向FrameLayout添加一个片段,但它不起作用。我的目标是创建一个框架(/框架?)这总是存在的,用户可以与它交互,在这个框架内的一个特定的“窗口”中,我想显示页面/片段,总共五个,并且能够随时切换页面/片段,所以我有一个始终存在的框架,在这个动态变化的页面内。但现在我只停留在一开始,在这个框架中添加一个简单的片段(顺便说一句,它已经在工作了。)

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

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

我已经试着把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();**
}

活动_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_主页。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);
    }

}

谁能帮帮我吗?

约翰

共有1个答案

戎兴言
2023-03-14

您将支持库中的类与仅适用于较新版本操作系统的新类混为一谈。

例如,您导入android。应用程序。FragmentTransaction(可用于API 11),但调用了getSupportFragmentManager()。beginTransaction()返回android。支持v4.app。碎片事务。。。

你需要导入android。支持v4.app。FragmentTransaction,并确保您的HomeFragment扩展到android。支持v4.app。碎片,而不是android。应用程序。碎片。

 类似资料:
  • 我想在Android的一个活动中添加两个片段。但在加法时,它给出了错误; activity_main.xml 片段的布局1 片段2的布局

  • 本文向大家介绍android-fragments 添加片段,包括了android-fragments 添加片段的使用技巧和注意事项,需要的朋友参考一下 示例 静态添加片段 文件:activity_main.xml 文件:fragment1.xml 文件:fragment2.xml 文件:MainActivity.java 文件:Fragment1.java 文件:Fragment2.java 动态

  • 我使用的是推特引导,使用更少和Rails。 我想在我的CSS中添加一个简单的间隔,它出现在网格行之间,以便更好地分隔东西。我在引导程序中找不到任何可以为我做这件事的东西,所以我想我可以添加一个定义了边距顶部的间隔div。 我在引导覆盖文件中获取了以下代码: 但是所有的边距似乎都聚集在页面的顶部,而不是网格之间。我肯定这是我遗漏的位置属性,请帮助。 我愿意接受任何其他关于更好的方法来实现这一点的建议

  • 你好, 我有MainActivity,TitlesFragment和DelessFragment。 我的MainActivity将显示TitlesFragment,当用户单击标题时,TitlesFragment将被DetailsFragment替换。那很好。然而,当我将DetailsFragment添加到addToBackStack时。当我点击后退按钮时,它会关闭应用程序,而不是显示标题碎片。 我

  • 我有一个工具栏和一个导航抽屉。当我启动应用程序时,会创建工具栏和导航抽屉。当我单击导航抽屉中的项目时,它会启动新的片段并保留相同的工具栏。当我启动特定片段时,我基本上如何向工具栏添加菜单项,例如搜索、添加、编辑?我不希望在程序开始时使用它们,而是动态创建的。还有,我怎样才能点击这些按钮,让它们启动其他片段呢。我希望在一个片段中,与另一个片段中的编辑按钮相比,工具栏中的编辑按钮可以做特定的事情。谢谢

  • 3.4 运行规则分析 本节会给大家提供一个参考实例,用于告诉大家如何根据具体的业务实现自己的爬虫框架。 我们以公共规则中“阿里巴巴产品搜索”为例(这些公共的规则都在github.com/pholcus下面包含,大家可以参考下)。 package spider_lib // 基础包 import ( "github.com/PuerkitoBio/goquery"