我已经定义了片段的下一个标题:
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;?
感谢您的帮助。
答案 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();