从PagerAdapter启动新的Activity

3
我该如何使用Intent在PagerAdapter类中启动新的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 是在某个 Activity 之外还是内部? - Pankaj Nimgade
如果在触发意图时出现崩溃,请阅读日志。日志可能会告诉您设置一个新任务标志,它看起来像readMore.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - Rakeeb Rajbhandari
@PankajNimgade 这是一个独立的类。我从几个活动中传递数组适配器来填充这个ViewPagerAdapter。 - smartsanja
@RakeebRajbhandari 这是一个编译错误。我无法实现Intent readMore = new Intent(getActivity(), ReadMoreActivity.class); 方法。 - smartsanja
@sajaz,正如你所知道的,要移动到另一个活动,你需要上下文。你可以将Context对象提供给ViewPagerAdapter的构造函数,这样你就有了可用的上下文,你可以按照你的问题编写代码,它会起作用 :) - Pankaj Nimgade
2个回答

3

getActivity()startActivity方法在PagerAdapter中不可用。因此,使用v.getContext()准备意图并调用startActivity方法:

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

1
非常感谢您的指导。我正在从iOS开发转向Android。这是我的初学阶段。我仍在努力应对那些SDK和语法上的差异。 - smartsanja

0
public class ViewPagerAdapter extends PagerAdapter{
Context _context;
public ViewPagerAdapter (Context context){
_context = context;
}
}

你的代码已经在问题中了,而且其他答案也可以工作 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接