android - 在嵌套在 fragment 中的 AdapterView.OnItemClickListener(){} 中传递 Activity 上下文 - 该方法未定义

标签 android android-activity android-fragments

我在这个方法中传递 Activity 上下文有问题

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

一切正常

按照你在我试过的评论中所说的进行编辑

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

            }       

    }       );  
        }   

没有任何变化

最佳答案

When I invoke this method in onItemClick I can't use getActivity, I try with, MainScreen.this but nothing works

您可以使用 onItemClick 中的 view.getContext() 获取它,而不是存储 Context 引用。

要创建 SingleInfoToServer 对象也可以使用 new 关键字:

SingleInfoToServer singleInfoToServer = new SingleInfoToServer(
                                                 currentChild.getIdOfChild(),
                                  currentChild.getOdbiorDzieckaIdOfActivity(), 
                  currentChild.getOdbiorDzieckaIdOfState(), view.getContext());

关于android - 在嵌套在 fragment 中的 AdapterView.OnItemClickListener(){} 中传递 Activity 上下文 - 该方法未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25958835/

相关文章:

javascript - 如何创建在 React Native 中可见的 2 行和 3 列的水平滚动平面列表?

java - 使用 CSV 文件创建数据库 Android

android - 异步任务内存不足错误 : bitmap size exceeds VM budget

java - Activity 内/Activity 间通信

android - 如何检测Home Activity当前是否在ActivityStack的顶部

android - Seekbar 进度可绘制不显示和 API 23

android - 包括 PebbleKit 似乎创建了第二个启动器

java - 无法在 fragment 内使用谷歌地图V2

android - 为什么通过 SupportFragmentManager 添加 fragment 的顺序很重要?

android - ViewPager "TransactionTooLargeException"测试 ViewPager