如何在片段的方法中获取已实现的回调的上下文

时间:2016-11-30 09:52:22

标签: android android-fragments android-context

我已经定义了片段的下一个标题:

public class AllVideosFragment extends Fragment implements AutomaticCallback{

在这个Fragment中,我有下一个处理微调器的函数:

// Listener called when spinner item selected
        spinnerLanguages.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) {
                // Get selected row data to show on screen
                String language = ((TextView) v.findViewById(R.id.tvSpinnerRow)).getText().toString();

                if(language.equals(getString(R.string.str_en)))
                    Hawk.put(Config.TV_LANGUAGE, "en");
                if(language.equals(getString(R.string.str_es)))
                    Hawk.put(Config.TV_LANGUAGE, "es");

                //We need to retrive data again
                new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), **CONTEXT OF THE CALLBACK**);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {
                // your code here
            }

        });

如果我在旋转器处理方法之外使用方法,我可以使用&#34;这个&#34;,但在里面我不知道我需要使用什么。

new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), this);

我需要用哪种方法来代替&#34;这&#34;?

感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

您处于匿名范围,this将引用范围。如果要传递外部this,则必须在此情况下明确命名

AllVideosFragment.this

答案 1 :(得分:2)

这将为您提供当前回调的上下文,FragmentName.this将引用片段上下文,而getActivity()指的是您的片段所在的活动上下文。为了方便起见,在全局范围内创建Context context,将其初始化为片段&#39; onViewCreated()方法context = getActivity(),并在片段中的任意位置使用它。

答案 2 :(得分:-1)

答案是:

new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), getActivity().this);

答案 3 :(得分:-2)

AllVideosFragment.this.getActivity();