我找不到在静态片段(onCreateView()函数)中将上下文传递给适配器for spinner的方法:
public class MainActivity extends AppCompatActivity{
.
.
.
public static class MainFragment extends Fragment {
.
.
.
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
.
.
.
spinner1.setAdapter(new MyAdapter(MainActivity.this, spinner1, spinnerValues));
spinner2.setAdapter(new MyAdapter(this, spinner1, spinnerValues));
spinner3.setAdapter(new MyAdapter(this, spinner1, spinnerValues));
.
.
.
我甚至尝试创建静态类,它使用静态方法返回上下文,但两种方法都不起作用。
那是MyAdapter类:
public class MyAdapter extends ArrayAdapter<String> {
public MyAdapter(Context ctx, int txtViewResourceId, String[] objects) {
super(ctx, txtViewResourceId, objects);
}
public View getDropDownView(int position, View cnvtView, ViewGroup prnt) {
return getCustomView(position, cnvtView, prnt);
}
public View getView(int pos, View cnvtView, ViewGroup prnt) {
return getCustomView(pos, cnvtView, prnt);
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View mySpinner = inflater.inflate(R.layout.custom_spinner, parent, false);
TextView main_text = (TextView) mySpinner
.findViewById(R.id.text_main_seen);
main_text.setText(spinnerValues[position]);
return mySpinner;
}
}
编辑:我收到一条错误:“MainActivity.this无法从静态上下文中引用”
答案 0 :(得分:1)
您可以传递getActivity()
或yourParentView.getContext()
。
<强>上下文强> 顾名思义,它是应用程序/对象当前状态的上下文。它允许新创建的对象了解正在发生的事情。通常,您可以调用它来获取有关程序其他部分(活动,包/应用程序)的信息
<强>活动强> Activity是支持屏幕或UI的Java代码。换句话说,用户界面的构建块是活动。 Activity类是Android中的预定义类,每个具有UI的应用程序都必须继承它以创建窗口。 Activity表示Android应用程序的表示层,例如,用户看到的屏幕。 Android应用程序可以有多个活动,并且可以在应用程序运行时在它们之间切换。
注意:Activity扩展了Context。上下文不是活动。