Android 如何使用共享首选项第一次而不是第二次打开查看寻呼机?

Android 如何使用共享首选项第一次而不是第二次打开查看寻呼机?,android,Android,我创建了两个活动,第一个是Tour.java,第二个是Home.java。巡演活动是为了查看寻呼机,我已经为我的android应用程序创建了一个查看寻呼机。我使用共享偏好。但是,如果我打开应用程序,则无法查看查看页面,它会直接转到主页。我为视图寻呼机给出的条件是,如果用户第一次打开应用程序,视图寻呼机应该显示给用户,第二次不应该显示给用户。但我面临的问题是,我无法第一次查看浏览页面本身。 Tour.java public class Tour extends AppCompatActivity

我创建了两个活动,第一个是Tour.java,第二个是Home.java。巡演活动是为了查看寻呼机,我已经为我的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();
        }

    }


}
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;
}

必须保存布尔值而不是字符串

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);
            }
        }
好,

-首先检查您的启动器活动是home.java,然后您必须从清单文件中删除它

-执行tour.java活动之前,请先检查首选项。如果首选项为false,则重定向到tour.java活动,否则启动主活动

如果有混乱,请告诉我

谢谢

我不知道如何在tour.java执行之前检查首选项?


-简单地说,您可以在检查首选项后在启动屏幕上进行检查,然后重定向到tour.java或home.java。清楚吗?

我希望我的舱单是正确的。我不知道如何在tour.java执行之前检查首选项?结果仍然相同@husen