我有一个包含四个片段的视图寻呼机,其中一个是包含地图的片段。当我第一次使用 Viewpager 时,它工作正常。但是当我返回并再次返回 viewpager 时,地图没有加载当前的 latlong。
这是我的 ViewPagerClass
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment) {
mFragmentList.add(fragment);
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
这是我的实现
class BottomNavigation : AppCompatActivity(), com.can_u_pls.fragment.RequirmentBack {
private var canUplsApiService: CanUplsService? = null
private var mHelper: PrefHelper? = null
private var mDetector: ConnectionDetector? = null
private var mDialog: ProgressDialog? = null
private var viewPager: ViewPager? = null
//Fragments
internal var chatFragment: Chat? = null
internal var trackFragment: TrackPage? = null
internal var billFragment: BillPage? = null
internal var payFragment: PayPage? = null
internal var prevMenuItem: MenuItem? = null
internal var adapter: ViewPagerAdapter? = null
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.bottom_chat -> {
viewPager!!.setCurrentItem(0)
return@OnNavigationItemSelectedListener true
}
R.id.bottom_bill -> {
/* if (PrefHelper(this@BottomNavigation).getPref(Constants.PUCHASER, false)) {
CommonMethods.showAlert(this@BottomNavigation, getString(R.string.message), "You don't have the right to upload if you purchase item")
} else {*/
viewPager!!.setCurrentItem(2)
return@OnNavigationItemSelectedListener true
// }
}
R.id.bottom_pay -> {
/* if (PrefHelper(this@BottomNavigation).getPref(Constants.PUCHASER, false)) {*/
viewPager!!.setCurrentItem(3)
return@OnNavigationItemSelectedListener true
/* } else {
CommonMethods.showAlert(this@BottomNavigation, getString(R.string.message), "You don't have the right to upload if you deliver item")
}*/
}
R.id.bottom_track -> {
viewPager!!.setCurrentItem(1)
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
val inflater = menuInflater
inflater.inflate(R.menu.navigation, menu)
}
override fun onResume() {
super.onResume()
if (getIntent() != null) {
if (!"home".equals(intent.getStringExtra(Constants.FROM))) {
Log.e("from_user_id", "" + getIntent().getStringExtra("from_user_id"));
if ("5".equals(getIntent().getStringExtra("action"))) {
viewPager!!.setCurrentItem(2)
PrefHelper(this@BottomNavigation).savePref(Constants.DELIVERY, false)
PrefHelper(this@BottomNavigation).savePref(Constants.MSG_RPLY_ID, getIntent().getStringExtra("message_reply_id"))
PrefHelper(this@BottomNavigation).savePref(Constants.OTHER_USER_ID, getIntent().getStringExtra("from_user_id"))
PrefHelper(this@BottomNavigation).savePref(Constants.STATUS, getIntent().getStringExtra("action"))
} /*else if ("3".equals(getIntent().getStringExtra("action"))) {
PrefHelper(this@BottomNavigation).savePref(Constants.MSG_RPLY_ID, getIntent().getStringExtra("message_reply_id"))
PrefHelper(this@BottomNavigation).savePref(Constants.DELIVERY, false)
PrefHelper(this@BottomNavigation).savePref(Constants.OTHER_USER_ID, getIntent().getStringExtra("from_user_id"))
PrefHelper(this@BottomNavigation).savePref(Constants.STATUS, getIntent().getStringExtra("action"))
}*/
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_bottom_navigation)
mDetector = ConnectionDetector(this@BottomNavigation)
mHelper = PrefHelper(this@BottomNavigation)
mDialog = ProgressDialog(this@BottomNavigation)
canUplsApiService = CanUplsService.Factory.makeCanUplsService(this@BottomNavigation)
mDialog!!.setCancelable(false)
// mTextMessage = findViewById(R.id.message) as TextView
val navigation = findViewById(R.id.bottom_navigation) as BottomNavigationView
viewPager = findViewById(R.id.viewpager) as ViewPager
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
PrefHelper(this@BottomNavigation).savePref("customer_lat", "0.0")
PrefHelper(this@BottomNavigation).savePref("customer_long", "0.0")
viewPager?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
Log.e("page111", "" + state)
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
Log.e("page", "" + position)
if ("0".equals(position)) {
chatFragment = Chat()
} else if ("1".equals(position)) {
trackFragment = TrackPage()
} else if ("2".equals(position)) {
billFragment = BillPage()
} else if ("3".equals(position)) {
payFragment = PayPage()
}
}
override fun onPageSelected(position: Int) {
if (prevMenuItem != null) {
prevMenuItem!!.setChecked(false)
} else {
navigation.getMenu().getItem(0).setChecked(false)
}
Log.d("page", "onPageSelected: " + position)
navigation.getMenu().getItem(position).setChecked(true)
prevMenuItem = navigation.getMenu().getItem(position)
// viewpager.adapter.notifyDataSetChanged();
}
})
setupViewPager(viewPager!!)
}
override fun requirmets(status: String) {
}
override fun onBackPressed() {
super.onBackPressed()
overridePendingTransition(R.anim.scale_down, R.anim.activity_close_translate)
}
private fun getRequirement(rplyId: String) {
Log.e("STATUS", "5555555555555")
var mParams: HashMap<String, String> = HashMap<String, String>()
mParams!!.put("session_token", mHelper!!.getPref(Constants.SESSION_TOKEN));
mParams!!.put("device_type", "1");
mParams!!.put("language", "en");
mParams!!.put("message_reply_id", rplyId);
if (mDetector!!.isConnectingToInternet()) {
mDialog!!.setMessage(getString(R.string.list_detail))
mDialog!!.show()
val mCall = canUplsApiService!!.getRequirementDetails(mParams)
mCall.enqueue(object : Callback<ResponseFormat> {
override fun onResponse(call: Call<ResponseFormat>, response: Response<ResponseFormat>) {
mDialog!!.dismiss()
if (response.body().responseStatus == 1) {
Toast.makeText(this@BottomNavigation, response.body().responseMsg, Toast.LENGTH_SHORT).show()
mHelper!!.savePref(Constants.MSG_RPLY_ID, "" + response.body().responseData!!.message_reply_id)
} else if (response.body().responseInvalid == 1) {
CommonMethods.closeApp(this@BottomNavigation);
} else {
CommonMethods.showAlert(this@BottomNavigation, getString(R.string.message), response.body().responseMsg)
}
}
override fun onFailure(call: Call<ResponseFormat>, t: Throwable) {
mDialog!!.dismiss()
Log.d("Register", t.toString())
CommonMethods.showAlert(this@BottomNavigation, getString(R.string.attention), getString(R.string.something_wrong))
}
})
} else {
CommonMethods.showAlert(this@BottomNavigation, getString(R.string.no_internet), getString(R.string.internet_toast))
}
}
private fun setupViewPager(viewPager: ViewPager) {
val adapter = ViewPagerAdapter(supportFragmentManager)
viewPager!!.setOffscreenPageLimit(3)
chatFragment = Chat()
trackFragment = TrackPage()
billFragment = BillPage()
payFragment = PayPage()
adapter.addFragment(chatFragment)
adapter.addFragment(trackFragment)
adapter.addFragment(billFragment)
adapter.addFragment(payFragment)
viewPager.adapter = adapter
}
}