片段中的FindViewById

时间:2017-07-19 14:08:44

标签: android android-layout android-fragments navigation-drawer findviewbyid

我正在使用片段和naviagaton抽屉活动的应用程序中工作。 我做了一些基本的事情,我经常不得不写#34; findViewById"。

spinner = (Spinner)findViewById(R.id.spinner);

通常它工作正常但是在片段的onCreatView上我遇到了麻烦。程序所说的任何地方都无法解决方法findviewbyid"我在哪里使用findviewbyId。

我读了很多关于这个主题的问题和答案,并尝试了一切:

1

spinner = (Spinner)getView.findViewById(R.id.spinner);
return inflater.inflate(R.layout.fragment_first, container, false);

2

spinner = (Spinner)getActivity.findViewById(R.id.spinner);
return inflater.inflate(R.layout.fragment_first, container, false);

3

View v = inflater.inflate(R.layout.fragment_first, container, false);
spinner = (Spinner)v.findViewById(R.id.spinner);
return v;

但没有一个有助于解决我的问题......

完整代码:

public class First extends Fragment {

    Spinner spinner;


    public First() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                           Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        spinner = (Spinner)findViewById(R.id.spinner);

        return inflater.inflate(R.layout.fragment_first, container, false);
    }
}

那么如何在片段中使用textviews,imageviews,spinner等呢?

修改 我创建了一个新的简单项目并且知道我可以使用Buttons,TextView ......,但我不知道在初始化对象时是否正常获取片段警告:

textView=(TextView)v.findViewById(R.id.textView);

当我使用鼠标(TextView)时,我收到此报告:

Casting 'v.findViewById(R.id.textView)' to 'TextView' is redundant 

这可以吗?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

这应该可以解决问题 修改onCreateView(),如下所示:

View view = inflater.inflate(R.layout.fragment_first, container, false);
spinner = (Spinner)view.findViewById(R.id.spinner);
return view;

请注意,在这种情况下,布局fragment_first应该包含您想要查找的视图(即微调器)。

答案 1 :(得分:1)

试试这个:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    // Defines the xml file for the fragment
    View view =  inflater.inflate(R.layout.fragment_foo, parent, false);
    spinner = (Spinner)view.findViewById(R.id.spinner);
    return view;
}