我有片段问题,并在开始活动后直接调用它。
我有一个包含三个片段的片段活动。 我可以通过从左到右,从右到左或在标签上滑动来选择片段。
但是现在我喜欢用片段No.0开始活动。 我想从1号或2号片段开始。
我怎么能意识到这一点?
答案 0 :(得分:0)
在Intent中添加一个额外的内容,指定您想要的片段,然后检查onCreate()
内的Intent。如果索引足够,那么你可以这样做:
Intent intent = new Intent(this, ActivityWithFragments.class);
intent.putExtra("start_index", 2);
startActivity(intent);
然后在你的活动中:
@Override
protected void onCreate(Bundle saved) {
super.onCreate(saved);
/* normal onCreate code: setContentView, findViewById, etc...*/
final Intent intent = getIntent();
int startIndex = intent.getIntExtra("start_index", 0);
// use startIndex to show the appropriate fragment
}
答案 1 :(得分:0)
您可以使用setCurrentItem()
myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), this);
viewPager.setAdapter(myPagerAdapter);
viewPager.setCurrentItem(1); // 1 for page No. 1
答案 2 :(得分:0)
是的,非常感谢你。
就是这样。
我需要更多时间来了解代码的确切内容以及我如何实现新部分。
但现在它运行良好,做我喜欢的事情。 : - )
对于其他感兴趣的人,我会在下面提供一份代码。
package com.example.packagename;
import android.os.Build;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.content.SharedPreferences;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
public class Main_Activity extends FragmentActivity
{
ViewPager viewPager;
PagerAdapterSection sectionsAdapter;
PagerAdapterTab tabAdapter;
ActionBar actionBar;
private SharedPreferences spActivityLaunch;
private SharedPreferences.Editor spEditorActivityLaunch;
private int startFragmentIndex;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.spActivityLaunch = this.getSharedPreferences("ActivityLaunchSettings", 0);
this.startFragmentIndex = spActivityLaunch.getInt("FragmentNo", 0);
if(Build.VERSION.SDK_INT >= 11)
{
setupTabsUpSDK11();
}
else
{
setupTabsLowerSDK11();
}
}
@SuppressLint("NewApi")
private void setupTabsUpSDK11()
{
setContentView(R.layout.main_layout);
tabAdapter = new PagerAdapterTab(getSupportFragmentManager());
viewPager = (ViewPager)findViewById(R.id.pager);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position);
spEditorActivityLaunch = spActivityLaunch.edit();
spEditorActivityLaunch.putInt("FragmentNo", position);
spEditorActivityLaunch.commit();
}
});
viewPager.setAdapter(tabAdapter);
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener()
{
@Override
public void onTabReselected(android.app.ActionBar.Tab tab, FragmentTransaction ft)
{
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(android.app.ActionBar.Tab tab, FragmentTransaction ft)
{
}
};
actionBar.addTab(actionBar.newTab().setText("Fragment1").setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("Fragment2").setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("Fragment3").setTabListener(tabListener));
viewPager.setCurrentItem(startFragmentIndex);
}
private void setupTabsLowerSDK11()
{
setContentView(R.layout.main_layout_lower_version);
sectionsAdapter = new PagerAdapterSection(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
spEditorActivityLaunch = spActivityLaunch.edit();
spEditorActivityLaunch.putInt("FragmentNo", position);
spEditorActivityLaunch.commit();
}
});
viewPager.setAdapter(sectionsAdapter);
viewPager.setCurrentItem(this.startFragmentIndex);
}
}