java - 如何在 ScreenSlidePagerAdapter 中启动新活动?
问题描述
我有一个 FragmentActivity,我有一个 ScreenSlidePagerAdapter,它使用 getItem() 方法显示许多片段,用于在片段之间滑动。我希望一旦用户完成了对片段的滑动(例如从 0 到 15),就会打开一个新活动,显示用户在浏览片段时所做的结果(这是一门课程)。
我需要的是在片段之后打开一个新活动的意图。
这是我的代码:
package activities;
import android.content.Intent;
import android.net.Uri;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import com.flixarts.ar.*.R;
import com.flixarts.ar.*.fragment1;
import com.flixarts.ar.*.fragment10;
import com.flixarts.ar.*.fragment11;
import com.flixarts.ar.*.fragment12;
import com.flixarts.ar.*.fragment13;
import com.flixarts.ar.*.fragment14;
import com.flixarts.ar.*.fragment15;
import com.flixarts.ar.*.fragment2;
import com.flixarts.ar.*.fragment3;
import com.flixarts.ar.*.fragment4;
import com.flixarts.ar.*.fragment5;
import com.flixarts.ar.*.fragment6;
import com.flixarts.ar.*.fragment7;
import com.flixarts.ar.*.fragment8;
import com.flixarts.ar.*.fragment9;
import com.flixarts.ar.*.menuscreen;
public class saludos extends FragmentActivity implements fragment1.OnFragmentInteractionListener, fragment2.OnFragmentInteractionListener, fragment3.OnFragmentInteractionListener, fragment4.OnFragmentInteractionListener {
private TextView espacioFrases;
private TextView espacioFrasesTraducidas;
private Button next;
private Button buttonHome;
private ViewPager mPager;
private PagerAdapter pagerAdapter;
private static final int NUM_PAGES = 15;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saludos);
mPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(pagerAdapter);
}
@Override
public void onBackPressed(){
if (mPager.getCurrentItem() == 0) {
super.onBackPressed();
}
else {
mPager.setCurrentItem(mPager.getCurrentItem() -1);
}
}
@Override
public void onFragmentInteraction(Uri uri) {
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position){
switch (position){
case 0: return new fragment1();
case 1: return new fragment2();
case 2: return new fragment3();
case 3: return new fragment4();
case 4: return new fragment5();
case 5: return new fragment6();
case 6: return new fragment7();
case 7: return new fragment8();
case 8: return new fragment9();
case 9: return new fragment10();
case 10: return new fragment11();
case 11: return new fragment12();
case 12: return new fragment13();
case 13: return new fragment14();
case 14: return new fragment15();
//Here I want to start new activity
default: return new fragment1();
}
}
@Override
public int getCount(){
return NUM_PAGES;
}
}
我试图用 getActivity() 创建一个意图,但这个方法没有加载到 Android Studio 中(也许这是旧的)。
解决方案
您应该在最后显示适配器的片段中编写 startactivity 代码。(如果您使用相同片段的实例,则必须在创建时将位置从适配器传递到片段。
Intent intent = new Intent(getContext(), ThirdActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
推荐阅读
- azure - (Azure) 如何从逻辑应用中的表存储中获取和比较时间戳日期?
- c# - EF Core 多线程死锁 + BeginTransaction + Commit
- ios - UIBezierPath 动画 - 对象固定在左上角
- haskell - Haskell 设计可测试组件
- python - PYTHON:我应该如何更改我的代码以按天而不是按月重新组织文件?
- swift - 将 Firebase Analytics 添加到项目
- mongodb - 无法从 mongodb 获取数据
- sapui5 - 如果 sap.ui.table 的单元格是输入类型,如何注册 contextmenu 事件
- javascript - 从 JavaScript 网页启动 shell 脚本文件
- terraform - 地形;多余的“名称”键的目的?