动态片段中的布局



我正在编写一个计算器应用程序,希望能够在其中切换4种计算模式:十进制、二进制、八进制和十六进制。为了管理不同模式的不同UI,我的活动中有4个Fragment子类。除了"活动"的主XML文件外,每个Fragment都有自己的XML布局文件。我在安卓开发者网站上找到了一个为碎片膨胀布局的指南,我遵循了这个指南。然而,我想将监听器等添加到布局的各个组件中,最好是在Fragment的onCreateLayout方法中,或者在其他地方,我可以轻松地做到这一点,并最大限度地减少代码重复。

然而,当我试图调用findViewByID来访问其中一个已膨胀的视图时(显然,在我调用LayoutInflater.inflate之后),我得到了一个null返回值。无论我是从onCreateLayout中调用findViewByID,还是从"活动"中的其他位置调用(理论上,在创建视图之后),都会出现此问题。这里出了什么问题?

我认为有一个问题可能是,我在各种Fragment布局之间重载了视图的名称。例如,二进制布局中的"1"按钮与十六进制布局中的"1"按钮具有相同的ID。假设二进制和十六进制布局从来都不是活动的一部分,这是允许的吗?

谢谢。

我认为不同布局中的相同id在Fragment中不是问题。首先,你必须捕捉到膨胀的视图,然后找到里面的任何东西。例如——

@Override
public View onCreateView(LayoutInflater inflater,  ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.frg1, container, false);
    android.util.Log.v("", "!!!!!!!!!! Frg1  !!!!!!!!!");   

    Button b = (Button) view.findViewById(R.id.b1);
    b.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            Toast.makeText(getActivity(), "here", Toast.LENGTH_SHORT).show();
        }
    });
    return view;
}

最新更新