我创建了两个活动。第一个是Tour.java,第二个是Home.java。浏览活动是针对View寻呼机,我为我的Android应用程序创建了一个视图寻呼机。我使用共享偏好。但是如果我打开应用程序,则无法查看视图寻呼机,直接进入主页。我给视图寻呼机的条件是,如果用户第一次打开应用程序,应该向用户显示视图寻呼机,而第二次不应该向用户显示。但我面临的问题是我无法第一次看到寻呼机本身。 的 Tour.java
public class Tour extends AppCompatActivity implements View.OnClickListener {
private ViewPager mpager;
private int[] layouts = {R.layout.firstslide,R.layout.secondslide,R.layout.thirdslide,R.layout.fourthslide};
private MpagerAdapter mpagerAdapter;
private LinearLayout Dots_Layout;
private ImageView[] dots;
private Button bnnext,bnskip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (new PreferenceManager(this).checkPreference())
{
login();
}
if (Build.VERSION.SDK_INT >= 19)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
else
{
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
setContentView(R.layout.tour);
mpager = (ViewPager)findViewById(R.id.viewpager);
mpagerAdapter = new MpagerAdapter(layouts,this);
mpager.setAdapter(mpagerAdapter);
Dots_Layout = (LinearLayout)findViewById(R.id.dotslayout);
bnnext = (Button)findViewById(R.id.bnnext);
bnskip = (Button)findViewById(R.id.bnskip);
bnnext.setOnClickListener(this);
bnskip.setOnClickListener(this);
createDots(0);
mpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
createDots(position);
if (position == layouts.length-1)
{
bnnext.setText("Start");
bnskip.setVisibility(View.INVISIBLE);
}
else
{
bnnext.setText("Next");
bnskip.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void createDots(int current_position)
{
if (Dots_Layout != null)
{
Dots_Layout.removeAllViews();
dots = new ImageView[layouts.length];
for(int i = 0; i<layouts.length; i++)
{
dots[i] = new ImageView(this);
if (i==current_position)
{
dots[i].setImageDrawable(ContextCompat.getDrawable(this,R.drawable.active_dots));
}
else
{
dots[i].setImageDrawable(ContextCompat.getDrawable(this,R.drawable.default_dots));
}
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(4,0,4,0);
Dots_Layout.addView(dots[i],params);
}
}
}
@Override
public void onClick(View view) {
switch (view.getId())
{
case R.id.bnnext:
loadNextSlide();
break;
case R.id.bnskip:
login();
new PreferenceManager(this).writePreference();
break;
}
}
private void login()
{
startActivity(new Intent(getApplicationContext(),GridHome.class));
finish();
}
private void loadNextSlide()
{
int next_slide = mpager.getCurrentItem()+1;
if (next_slide<layouts.length)
{
mpager.setCurrentItem(next_slide);
}
else
{
login();
new PreferenceManager(this).writePreference();
}
}
}
PreferenceManager.java
public class PreferenceManager {
private Context context;
private SharedPreferences sharedPreferences;
public PreferenceManager(Context context)
{
this.context = context;
getSharedPreference();
}
private void getSharedPreference()
{
sharedPreferences = context.getSharedPreferences(context.getString(R.string.my_preference),Context.MODE_PRIVATE);
}
public void writePreference()
{
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(context.getString(R.string.my_preference_key),"INIT_OK");
editor.commit();
}
public boolean checkPreference()
{
boolean status = false;
if (sharedPreferences.getString(context.getString(R.string.my_preference_key),"null").equals("null "))
{
status = false;
}
else
{
status = true;
}
return status;
}
答案 0 :(得分:0)
您必须保存布尔值而不是字符串。
public void setIntroShown(boolean flag) {
SharedPreferences.Editor editor = getEditor();
editor.putBoolean("intro", flag);
editor.commit();
}
public boolean checkPreference() {
initializeSharedPreference();
return sharedpreferences.getBoolean("intro", false);
}
private SharedPreferences.Editor getEditor() {
initializeSharedPreference();
return sharedpreferences.edit();
}
private void initializeSharedPreference() {
if (sharedpreferences == null) {
sharedpreferences = context.getSharedPreferences(SharedPrefTags.APP_PREFERENCE, Context.MODE_PRIVATE);
}
}
答案 1 :(得分:0)
好,
- 首先检查你的启动器活动是哪个是home.java是你的启动器活动然后你必须从清单文件中删除它。
- 在tour.java活动执行之前检查首选项。如果首选项为false,则重定向到tour.java活动,否则启动主页活动。
是否存在混淆然后让我知道。
感谢。
我不知道如何在tour.java执行之前检查首选项?
-simple,您可以在检查首选项后在启动屏幕上检查它,然后重定向到tour.java或home.java。清楚了吗?