gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:47:42 29 4
gpt4 key购买 nike

这似乎是一个我不好意思问的基本问题,但我对我的 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 。因此,在这种情况下,您的 Button 将由一个 fragment 管理,单击 Button 将用另一个 fragment replace() 该 fragment 。鉴于您的 FragmentTransaction 具有 addToBackStack(),按 BACK 将删除替换 fragment 并返回到您的 Button fragment 。

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

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com