【问题标题】:Start new Activity from PagerAdapter从 PagerAdapter 启动新的 Activity
【发布时间】:2015-03-30 04:53:54
【问题描述】:

如何使用 PagerAdapter 类中的 Intent 启动一个新 Activity? 这就是我的 ViewPagerAdapter 类的样子。

public class ViewPagerAdapter extends PagerAdapter

这就是我尝试在 ViewPagerAdapter 的 OnClickListner 方法中启动新活动的方式

@Override
        public void onClick(View v) {
           // Page is clicked
           NewsItem item = ViewPagerAdapter.this.newsItems.get(position);
           Log.w("TAP ON NEWS ITEM ", item.getTitle());

           // start ImageViewer Activity
            Intent readMore = new Intent(getActivity(), ReadMoreActivity.class);

            startActivity(readMore);

        }
    }); 

【问题讨论】:

  • 是您的 ViewPagerAdapter 超出了某些活动或内部活动
  • 如果你在触发意图时遇到了崩溃;阅读日志。它可能会告诉你设置一个新的任务标志,看起来像readMore.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
  • @PankajNimgade 它是一个单独的类。我从几个活动中传递数组适配器来填充这个 ViewPagerAdapter
  • @RakeebRajbhandari 这是一个编译错误。我无法实现 Intent readMore = new Intent(getActivity(), ReadMoreActivity.class);方法
  • @sajaz,你知道要移动到另一个你需要上下文的活动,你可以做的是向你的 ViewPagerAdapter 的构造函数提供 Context 对象,这样你就可以使用上下文并且你可以按照您的问题编写代码,它将起作用:)

标签: android android-viewpager fragmentpageradapter android-pageradapter


【解决方案1】:

getActivity()startActivity 方法在 PagerAdapter 中不可用。所以使用v.getContext() 来准备Intent 并调用startActivity 方法:

Intent readMore = new Intent(v.getContext(), ReadMoreActivity.class);
v.getContext().startActivity(readMore);

【讨论】:

  • 非常感谢您的指导。我正在从 iOS 开发转向 Android。这些是我的初学者日子。我仍在为那些 sdk 和语法差异而苦苦挣扎
【解决方案2】:
public class ViewPagerAdapter extends PagerAdapter{
Context _context;
public ViewPagerAdapter (Context context){
_context = context;
}
}

你的代码的其余部分在你的问题中,甚至其他答案也可以工作:),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2016-02-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多