我在片段中有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();
答案 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);
}