java - 我希望我的 Android fragment 覆盖 MainActivity 屏幕(我不想看到任何 MainActivity 文本、按钮等)

标签 java android android-fragments

这似乎是一个非常基本的问题,我都不好意思问它,但我对我的 Fragment 学习曲线感到非常沮丧,以至于我会暴露我的无知。

教科书上的一个例子,省去了很多弯路,使扩展它们变得困难,即使它们有效,也没有可以点击的按钮; MainActivity 只是加载了 FragmentA。好吧,保持基本。我明白了。

所以我在MainActivity中添加了一个按钮来单击加载FragmentA,但是该按钮显示在FragmentA屏幕上,有点像这样(不是实际的屏幕截图,但接近):

enter image description here

如何防止这种情况发生?我应该使用第二个 Activity 而不是 Fragment 吗?由于这项工作将在一个更大的项目中使用,因此我不想做任何被认为不是最佳实践的事情。我意识到 Fragment 的主要用途是在足够大的设备上启用并排“屏幕”。这不是我想要做的,但是用 Fragment 来完成我想要的事情是可能的,不是吗?

MainActivity.java

public class MainActivity extends Activity {

  @Override protected void  onCreate(Bundle savedInstanceState)
  {
                          super.onCreate(       savedInstanceState);

    setContentView(R.layout.activity_main);

   }

  public void btnLoadFragmentAByClick(View view)
  {
    FragmentA fragmentA;
                                                          fragmentA = new FragmentA();

    FragmentTransaction ft ;
                        ft = getFragmentManager().beginTransaction();
                        ft.replace(R.id.layout_container, fragmentA);
                        ft.addToBackStack("example");
                        ft.commit();
  }
}

FragmentA.java

public class FragmentA extends Fragment
{
    @Override
    public View onCreateView(LayoutInflater _inflater,
                           ViewGroup                          _container,
                           Bundle         _savedInstanceState)
  {

        return _inflater.inflate(R.layout.fragment_a,
                                                              _container,
                             false);

    }
} 

activity_main.xml

<RelativeLayout
    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           =".MainActivity" >

   <LinearLayout
       android:id           ="@+id/layout_container"
       android:orientation  ="vertical"
       android:layout_width ="wrap_content"
       android:layout_height="wrap_content"
       >
   </LinearLayout>

    <Button
        android:id           ="@+id/btnLoadFragmentA"
        android:text         ="Load Fragment A"
        android:onClick="btnLoadFragmentAByClick"
        android:layout_width ="wrap_content"
        android:layout_height="wrap_content"
        />

</RelativeLayout>

fragment_a.xml

<RelativeLayout
    xmlns:android           ="http://schemas.android.com/apk/res/android"
    android:layout_width    ="match_parent"
    android:layout_height   ="match_parent" >

    <TextView
        android:layout_width    ="wrap_content"
        android:layout_height   ="wrap_content"
        android:text            ="Layout for fragment A"
        android:textAppearance  ="?android:attr/textAppearanceLarge"
        >
    </TextView>

</RelativeLayout>

编辑

我意识到我可以在加载 FragmentA 之前隐藏 MainActiviy 按钮(以及任何其他对象)并在返回后显示它们,但我希望有一个或多个- 两行“修复”。

最佳答案

How do I prevent that?

嗯,在某种程度上,你不需要,因为这与 fragment 无关。

您的 activity_main.xmlButton float 在您用于 fragment 容器的 LinearLayout (???) 之上。如果您不希望 Button float 在 fragment 容器的顶部,请修复布局文件以使 Button float 在 fragment 容器的顶部。

I realize that I could hide the MainActiviy button (and any other objects) before loading FragmentA and show them after returning, but I was hoping for a one-or-two-line "fix".

使用 fragment 替换完整 UI 的典型解决方案是将所有内容都放在 fragment 中。您的 replace() 会将原始 fragment 替换为替换 fragment 。因此,在这种情况下,您的 Button 将由一个 fragment 管理,单击 Button 会将该 fragment replace() 替换为另一个 fragment 。鉴于您的 FragmentTransaction 具有 addToBackStack(),按 BACK 将删除替换 fragment 并返回到 Button fragment 。

关于java - 我希望我的 Android fragment 覆盖 MainActivity 屏幕(我不想看到任何 MainActivity 文本、按钮等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321528/

相关文章:

android - 软键盘仅在 EditText 焦点上显示一次

android - 如何在Android中添加全透明到半透明的渐变

android - 无法从静态上下文引用非静态方法 getChildFragmentManager()

java - Android 创建自定义 RecyclerView.Adapter 并从中创建其他类

java - 更改 vector 应用程序图标的背景颜色

java - Android 中的复杂 JSON 解析 - 多对象和数组

java - 获取 fragment 到另一个 fragment 的位置

java - EJB和preparedStatement?

android - 如何从android的 Assets 目录中的本地html文件进行ajax调用?

android - fragment.onCreateView 导致空指针异常