【问题标题】:Switching Fragment from Onclick event from listview从列表视图的 Onclick 事件切换片段
【发布时间】:2014-03-11 20:05:25
【问题描述】:

我有一个具有列表视图的片段,我使用一个单独的 baseadapter 类来使用来自 xml 的布局填充列表视图。当用户单击列表视图中的某个图像时,我需要切换到不同的片段。当我为该图像设置 onclick 侦听器时,我似乎无法在 onclick 中使用 getSupportFragmentManager() 方法。我怎样才能做到这一点?

      holder.userpic.setOnClickListener(new View.OnClickListener() {


            public void onClick(View v) {
                Log.d(" ", " value " + obj.get(position).get_post_id());
                final FragmentTransaction ft2 =  this.   getSupportFragmentManager().beginTransaction(); 
             bundle.putInt("pk", value);
             bundle.putInt(" ", value);
                 ProfileFrag fragment2 = new   ProfileFrag ();
                 fragment2.setArguments(bundle);
                 ft2.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                 ft2.replace(R.id.fragment_swap,fragment2); 
                 ft2.addToBackStack(null);
                 ft2.commit(); 




             }
         });

【问题讨论】:

  • 请粘贴一些代码!

标签: android android-listview onclicklistener


【解决方案1】:

您可以在 BaseAdapter 的构造函数中接受 FragmentActivity(或 ActionBarActivity),将其保存为字段,然后在该字段上调用方法。

【讨论】:

  • 我通过使用 getActivity() 获取活动将活动传递给了基础架构。然后我在 baseadapter 中创建了一个 Activity 变量并厌倦了 this.activity 但仍然没有工作
  • 如果你在 onClick 方法中写 this.activity,它不会起作用,因为this 在这里是匿名的 OnClickListener。只需编写activity.getSupportFragmentManager()...
  • 你找到解决方案了吗?我也有同样的问题!有什么代码可以帮忙吗?
【解决方案2】:

在调用 getSupportFragmentManager() 时使用您的 Fragments 名称

YourFragmentName.this.getSupportFragmentManager().beginTransaction();

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多