Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android DK试图通过片段显示/隐藏部分UI_Java_Android_Android Fragments - Fatal编程技术网

Java Android DK试图通过片段显示/隐藏部分UI

Java Android DK试图通过片段显示/隐藏部分UI,java,android,android-fragments,Java,Android,Android Fragments,所以我对安卓DK非常陌生,在我开始尝试处理碎片之前,我一直航行得很好 在它的核心,我试图做的是在我的应用程序的屏幕上有一系列的按钮,用户按下哪个按钮都会改变屏幕上显示的文本/微调器/按钮 我决定如何通过片段来实现它。我不明白为什么我的片段没有显示出来,但是,这应该是一个相对简单的例子 我有一个相对简单的activity_main.xml。我已更改了变量名,但请参见以下内容: <LinearLayout android:id="@+id/mainActivity" xmlns:androi

所以我对安卓DK非常陌生,在我开始尝试处理碎片之前,我一直航行得很好

在它的核心,我试图做的是在我的应用程序的屏幕上有一系列的按钮,用户按下哪个按钮都会改变屏幕上显示的文本/微调器/按钮

我决定如何通过片段来实现它。我不明白为什么我的片段没有显示出来,但是,这应该是一个相对简单的例子

我有一个相对简单的activity_main.xml。我已更改了变量名,但请参见以下内容:

<LinearLayout android:id="@+id/mainActivity" 
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"
android:orientation="vertical"
android:animateLayoutChanges="true" >

<Button
    android:id="@+id/buttonD"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/d_name"
    android:onClick="dMenuButton" />

<RelativeLayout
    android:id="@+id/fragment_container"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone" />

<Button
    android:id="@+id/buttonR"
    android:layout_below="@id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/r_name"
    android:onClick="rButton" />

</LinearLayout>
以及片段_d.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"
android:orientation="vertical" >

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="20dp"
    android:text="@string/text1"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Spinner
    android:id="@+id/numD"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@id/text1"
    android:layout_toRightOf="@id/text1" />

</RelativeLayout>

使用其各自的DFragment.java

public class DFragment extends Fragment {

static Spinner dSpinner;
ArrayAdapter<CharSequence> dAdapter;
RelativeLayout view;

public static DFragment newInstance() {
    DFragment dFragment = new DFragment();

    return dFragment ;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    view = (RelativeLayout) inflater.inflate(R.layout.fragment_d,
                                 container, false);

    createSpinners();

    return view;
}

private void createSpinners() {

    dSpinner = (Spinner) view.findViewById(R.id.numD);
    dAdapter= ArrayAdapter.createFromResource(getActivity().getBaseContext(),
                                                     R.array.numD,
                                                     android.R.layout.simple_spinner_item);

}

}
public类DFragment扩展了片段{
静态纺纱机;
阵列适配器;
相对论;
公共静态数据片段newInstance(){
DFragment DFragment=新的DFragment();
返回数据碎片;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=(相对)充气器。充气(R.layout.fragment\u d,
货柜(虚假);;
createSpinners();
返回视图;
}
私有void createSpinners(){
dSpinner=(微调器)view.findviewbyd(R.id.numD);
dAdapter=ArrayAdapter.createFromResource(getActivity().getBaseContext(),
R.array.numD,
android.R.layout.simple\u微调器(项目);
}
}
目前,片段布局覆盖了它下面的按钮。任何强迫它向下推下面的组件的帮助都会很好


提前感谢。

您在
fragment\u容器
的可视性方面肯定是正确的。您可以让它始终可见,然后允许片段事务更改容器中显示的内容

根据您的需求,您只需执行
.replace(R.layout.fragment\u container,anotherFragment)
即可更改显示的片段(代码仅为伪代码)

至于按钮,您是将它们添加到
活动\u main.xml
中,还是将它们添加到片段的布局中?只要在主活动布局中的
fragment\u容器
布局之后添加新按钮/文本,就可以了。让我确切地知道你试图通过按钮/文本实现什么


祝你好运

是的,我正计划使用。替换,根据需要替换碎片。我正在将按钮添加到activity_main.xml。我想让按钮在下面显示它们各自的片段,并进一步向下推剩余的按钮。相反,当他们展示他们的片段时,他们掩盖了下面的所有按钮。我添加了代码以向按钮显示片段(这是有效的),并向xml添加了按钮,这些按钮在片段未显示时会正确显示,但在片段显示时会被覆盖(我猜是这样的)。我尝试通过以下方式在布局上使用invalidate:(LinearLayout)findViewById(R.id.mainActivity).invalidate();但这似乎也不能解决问题。即使将所有内容切换到相对布局也不能解决问题。片段似乎覆盖了其他按钮,而不是重新绘制整个布局,使用invalidate()并不能解决问题。按钮的
OnClick
上发生了什么?我可以看到您使用的是
FragmentTransaction.show()
,但是您如何进一步“按下”其他按钮呢?您可以编辑您的问题以显示添加的按钮吗?我需要找出它们在xml或代码中的位置,以了解它们被覆盖的原因。我并没有进一步手动按下按钮,所以这可能是我的问题。我假设,如果将新按钮指定为包含片段的布局的“下方”,那么如果布局发生变化,它们将被迫向下移动。
public class DFragment extends Fragment {

static Spinner dSpinner;
ArrayAdapter<CharSequence> dAdapter;
RelativeLayout view;

public static DFragment newInstance() {
    DFragment dFragment = new DFragment();

    return dFragment ;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    view = (RelativeLayout) inflater.inflate(R.layout.fragment_d,
                                 container, false);

    createSpinners();

    return view;
}

private void createSpinners() {

    dSpinner = (Spinner) view.findViewById(R.id.numD);
    dAdapter= ArrayAdapter.createFromResource(getActivity().getBaseContext(),
                                                     R.array.numD,
                                                     android.R.layout.simple_spinner_item);

}

}