-1

我不能找到办法通过上下文适配器在静态片段微调(onCreateView()函数):的微调(在片段通过上下文)的Android适配器

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)); 
    . 
    . 
    . 

我甚至试图创建支持static方法返回上下文的静态类,但都没有工作。

这是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; 
    } 
} 

编辑:我收到一个错误:

+0

我不明白问题是什么。它看起来像你的适配器在其构造函数中接受一个上下文,并且正好接收一个Activity上下文。 –

+0

嗯,我收到一个错误:“MainActivity.this无法从静态上下文中引用” – Fryzjer

+0

请编辑该问题,并将该详细信息与正在使用它的完整类一起包含。 –

回答

1

您可以通过getActivity()yourParentView.getContext() “MainActivity.this不能从静态上下文中引用”。

语境 正如其名称所暗示的,该应用程序的当前状态的其上下文/目的。它可以让新创建的对象了解到底发生了什么。通常你调用它来获取关于你的程序(活动,封装/应用)

活动 活动是支持屏幕或UI中的Java代码的另一部分信息。换句话说,用户界面的构建块就是活动。 Activity类是Android中的预定义类,每个拥有UI的应用程序都必须继承它以创建窗口。活动表示Android应用程序的表示层,例如用户看到的屏幕。 Android应用程序可以有多个活动,并且可以在应用程序运行时在它们之间切换。

注意:Activity扩展了Context。上下文不是活动。

+1

解释为什么?'这将有利于这里的社区 –

+0

@BasitAnwer我有更新我的答案,**如果您对答案满意,请投票** –

+1

完成请始终尝试解释答案,以便其他用户可以从该问题和答案中受益 –