禁用主要活动的片段中的按钮

时间:2013-11-21 15:08:50

标签: android android-fragments

我在片段中有3个按钮,我想从主要活动中禁用它们。我尝试在replace()newfragment之前使用bundle选项,但是它创建了其他问题。片段中的按钮可以转换为主要活动吗?像这样的东西。我得到错误无法投射,但我的条目不正确。

            RedUp = (ButtonControls) getFragmentManager().findFragmentById(R.id.btnRedUP);

这是我的main.xml,它包含名为rgb_controls

的片段
        <FrameLayout
    android:id="@+id/rgb_controls"
    android:layout_width="390dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="550dp"
    android:layout_marginTop="10dp" >
</FrameLayout>

这是片段xml中名为button_controls.xml

的按钮
        <Button
    android:id="@+id/btnRedUP"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="80dp"
    android:text="UP"
    android:textSize="30dp" />

这是片段活动

    public class ButtonControls extends Fragment {

public Button RedUp, RedDn, GreenUp, GreenDn, BlueUp, BlueDn;

View view;

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

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

    RedUp = (Button) view.findViewById(R.id.btnRedUP);
    return view;

       }

           }

使用replace()

添加片段
                Fragment ButtonFragment = new ButtonControls();
        ButtonFragment.setArguments(bundle);

        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.rgb_controls, ButtonFragment).addToBackStack(null).commit();

1 个答案:

答案 0 :(得分:1)

这样的事情应该做的事情:

ButtonControls fragment = (ButtonControls)
    getFragmentManager().findFragmentById(R.id.rgb_controls);
fragment.setButtonsGone();

您必须在setButtonsGone中实际实施此ButtonControls方法。有点像:

public void setButtonsGone() {
    RedUp.setVisibility(View.GONE);
    RedDn.setVisibility(View.GONE);
    GreenUp.setVisibility(View.GONE);
    GreenDn.setVisibility(View.GONE);
    BlueUp.setVisibility(View.GONE);
    BlueDn.setVisibility(View.GONE);
}