【问题标题】:How to get activity reference inside fragment?如何获取片段内的活动参考?
【发布时间】:2015-01-10 10:37:24
【问题描述】:
 myOnClickListener = new MyOnClickListener(getActivity());

我没有在上面的课程中获得 Activity。我已经实现了 Onclick 事件,我试图在其中显示地图,但我没有从点击方法获得任何响应。

private static class MyOnClickListener implements View.OnClickListener {

        private final Context context;

        private MyOnClickListener(Context context) {
            this.context = context;
        }

        @Override
        public void onClick(View v) {
                String label = "ABC Label";
                String uriBegin = "geo:" + myAdapter.sendLati() + "," + myAdapter.sendLongi();
                String query = myAdapter.sendLati() + "," + myAdapter.sendLongi()  + "(" + label + ")";
                String encodedQuery = Uri.encode(query);
                String uriString = uriBegin + "?q=" + encodedQuery + "&z=16";
                Uri uri = Uri.parse(uriString);
                Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
                 startActivity(intent);

        }

    }

【问题讨论】:

  • 你需要在一个View上设置监听器。仅仅创建它不会有任何作用。
  • 如何在静态类中启动活动
  • 那么我该怎么做才能解决这个问题??
  • 1) 你用 Activity 扩展你的类了吗? 2)在哪个(Like Button,Textview..)点击你想要做所有的过程?
  • Fragment 中的这段代码及其扩展 FragmentActivity

标签: android dictionary fragment onclicklistener android-fragmentactivity


【解决方案1】:

改变

private final Activity activity;

private MyOnClickListener(Activity activity) {
     this.activity= activity;
}

执行此操作后,将此侦听器设置为您的视图

yourView.setOnClickListener(myOnClickListener);

【讨论】:

    【解决方案2】:

    尝试上下文:

    Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
    context.startActivity(intent);
    

    //设置为视图

    yourView.setOnClickListener(new myOnClickListener(getActivity));
    

    【讨论】:

    • 但我的 OnclickListener 不工作
    • 你设置了 yourView.setOnClickListener(new myOnClickListener(this));
    • 上面的代码正在运行,但是我传递了上下文而不是 getActivity
    【解决方案3】:

    在你的fargment类中初始化这个变量。

    private ActivityName mActivityName;
    

    并在名为“onCreateView”的片段函数中像这样获取它

    mActivityName = (ActivityName) getActivity();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多