传递嵌套在片段中的 AdapterView.OnItemClickListener() 中的活动上下文 - 方法未定义
Posted
技术标签:
【中文标题】传递嵌套在片段中的 AdapterView.OnItemClickListener() 中的活动上下文 - 方法未定义【英文标题】:pass context of activity in AdapterView.OnItemClickListener() nested in fragment - The method is undefined传递嵌套在片段中的 AdapterView.OnItemClickListener() 中的活动上下文 - 方法未定义 【发布时间】:2014-09-21 11:43:49 【问题描述】:我在此方法中传递活动上下文时遇到问题
private void registerClicksOnParents(ListView listView, final Dialog d, final
ImageButton btn, final ChildAndActivityDataClass currentChild)
listView.setOnItemClickListener(new OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
d.dismiss();
btn.setImageResource(R.drawable.odebrany);
btn.setEnabled(false);
currentChild.setOdbiorDzieckaIdOfState(App_class.odebrane);
SingleInfoToServer singleInfoToServer = SingleInfoToServer(currentChild.getIdOfChild(),
currentChild.getOdbiorDzieckaIdOfActivity(),
currentChild.getOdbiorDzieckaIdOfState(),
context);
);
当我在onItemClick
中调用此方法时,我无法使用getActivity
,我尝试使用MainScreen.this
,但没有任何效果。我尝试以这种方式在 Fragment onCreate 方法中获取上下文:
public class Aktywnosci_Fragment extends Fragment
Context context ;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
context = getActivity();
但它仍然显示相同的The method SingleInfoToServer(int, int, int, Context) is undefined for the type new AdapterView.OnItemClickListener()
这个方法构造函数是这样的
public SingleInfoToServer( int idOfChild, int idOfActivity, int idOfState, Context context)
this.context = context;
this.idOfChild = idOfChild;
this.idOfActivity = idOfActivity;
this.idOfState = idOfState;
所以一切都应该正常
按照你在 cmets 中所说的进行编辑,我尝试了这个
private void registerClicksOnParents(ListView listView, final Dialog d, final ImageButton btn, final ChildAndActivityDataClass currentChild, final Activity activity) listView.setOnItemClickListener(new OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
d.dismiss();
btn.setImageResource(R.drawable.odebrany);
btn.setEnabled(false);
currentChild.setOdbiorDzieckaIdOfState(App_class.odebrane);
SingleInfoToServer singleInfoToServer = SingleInfoToServer(currentChild.getIdOfChild(),
currentChild.getOdbiorDzieckaIdOfActivity(),
currentChild.getOdbiorDzieckaIdOfState(),
view.getContext());
);
没有任何变化
【问题讨论】:
使用view.getContext()
【参考方案1】:
当我在 onItemClick 中调用此方法时,我无法使用 getActivity,我 尝试使用 MainScreen.this 但没有任何效果
您可以使用view.getContext()
in onItemClick
获取它,而不是存储上下文引用。
要创建SingleInfoToServer
对象,还可以使用new
关键字:
SingleInfoToServer singleInfoToServer = new SingleInfoToServer(
currentChild.getIdOfChild(),
currentChild.getOdbiorDzieckaIdOfActivity(),
currentChild.getOdbiorDzieckaIdOfState(), view.getContext());
【讨论】:
这对我来说没有任何改变:SingleInfoToServer singleInfoToServer = SingleInfoToServer(currentChild.getIdOfChild(), currentChild.getOdbiorDzieckaIdOfActivity(), currentChild.getOdbiorDzieckaIdOfState(), view.getContext());而同样的错误仍然 @MyWay : 像SingleInfoToServer singleInfoToServer = new SingleInfoToServer(currentChild.getIdOfChild(), currentChild.getOdbiorDzieckaIdOfActivity(), currentChild.getOdbiorDzieckaIdOfState(), view.getContext());
一样做
OO omg 我只是个白痴,声明中缺少新的东西,当你生病时编程:D,谢谢帮助【参考方案2】:
您必须使用 Activity 对象来捕获 getActivity() 响应。然后从活动中你可以得到那个上下文。
【讨论】:
以上是关于传递嵌套在片段中的 AdapterView.OnItemClickListener() 中的活动上下文 - 方法未定义的主要内容,如果未能解决你的问题,请参考以下文章