【问题标题】:SharedPreferences save a button change invisible after click on itSharedPreferences 将按钮更改保存为单击后不可见
【发布时间】:2017-04-19 00:05:52
【问题描述】:

我是新来的。我是法国人,所以可能我的英语不太好,抱歉。

我是 Android 开发的初学者,我必须创建一个应用程序来完成我的学习。

我向你解释我的问题:我有一个名为 VoeuxActivity.java 8 个按钮的活动,它们在开始时都是可见的,当用户点击其中一个按钮时,按钮变为不可见(用户看不到按钮点击它后),我没有问题。但是我的问题是当我退出应用程序并再次返回应用程序时,该按钮再次可见,因此我的应用程序没有保存。 我想我必须使用 SharedPreferences 但我真的不知道如何使用它。 如果有人可以帮助我,我会很高兴。 我用一个按钮和按钮上方的文字发布了法庭代码(因为按钮是背景中的图像)。我也使 TextView 不可见,我也想保存更改。

公共类 VoeuxActivity 扩展 Activity {

public static boolean isClicked = false;
Button totoB;
TextView totoTv;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_voeux);

    totoB = (Button) findViewById(R.id.perso1);
    totoTV = (TextView) findViewById(R.id.perso1Text);
    totoB.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            isClicked = true;
            totoB.setVisibility(View.INVISIBLE);
            totoTv.setVisibility(View.INVISIBLE);
            Intent intentToto = new Intent(VoeuxActivity.this, JouerActivity.class);
            startActivity(intentToto);
        }
    });

} }

如何保存 Button 和 TextView 从可见到不可见的更改?

谢谢你的帮助。 吉格斯

【问题讨论】:

    标签: android button save sharedpreferences invisible


    【解决方案1】:

    您可以使用 SharedPreferences 来保存一些设置和信息,根据您的情况,请遵循以下代码:

        Button totoB;
        TextView totoTv;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_voeux);
    
            final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
    
            totoB = (Button) findViewById(R.id.perso1);
            totoTv = (TextView) findViewById(R.id.perso1Text);
            totoB.setVisibility(prefs.getBoolean("isTotoBVisible", true) ? View.VISIBLE : View.INVISIBLE);
            totoTv.setVisibility(prefs.getBoolean("isTotoTVVisible", true) ? View.VISIBLE : View.INVISIBLE);
    
            totoB.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    prefs.edit().putBoolean("isTotoBVisible", false).apply();
                    prefs.edit().putBoolean("isTotoTVVisible", false).apply();
    
                    totoB.setVisibility(View.INVISIBLE);
                    totoTv.setVisibility(View.INVISIBLE);
                    Intent intentToto = new Intent(VoeuxActivity.this, JouerActivity.class);
                    startActivity(intentToto);
                }
            });
        }
    

    【讨论】:

    • 谢谢你的帮助,但是我有一个新问题要问你,我好像不能在这里再次发布,我不明白为什么,你知道我是否要创建一个新主题?
    【解决方案2】:

    以这种方式实现您的SharedPreferences

    Boolean isFirstTime;
    
      SharedPreferences app_preferences = PreferenceManager
            .getDefaultSharedPreferences(Splash.this);
    
     SharedPreferences.Editor editor = app_preferences.edit();
    
     isFirstTime = app_preferences.getBoolean("isFirstTime", true);
    
     if (isFirstTime) {
    
    //implement your first time logic
    //SHow Button
    editor.putBoolean("isFirstTime", false);
     editor.commit();
    
    }else{
    //Invisible button
    //app open directly
    }
    

    【讨论】:

    • 非常感谢您的解决方案
    【解决方案3】:

    试试这个,

    public static boolean isClicked = false;
    Button totoB;
    TextView totoTv;
    SharedPreferences preferences;
    SharedPreferences.Editor prefsEditor ;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_voeux);
    
        preferences = getSharedPreferences("AppPrefs", MODE_PRIVATE);
        prefsEditor = preferences.edit();
    
        //get value
        String buttonClick=preferences.getString("ButtonClick", "0");   
        if(buttonClick.equals("0"))//before button click
        {
            totoB.setVisibility(View.VISIBLE);
            totoTv.setVisibility(View.VISIBLE);
        }
        else
        {
            totoB.setVisibility(View.INVISIBLE);
            totoTv.setVisibility(View.INVISIBLE);
        }
    
        totoB = (Button) findViewById(R.id.perso1);
        totoTV = (TextView) findViewById(R.id.perso1Text);
        totoB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isClicked = true;
                prefsEditor.putString("ButtonClick", "1");
                totoB.setVisibility(View.INVISIBLE);
                totoTv.setVisibility(View.INVISIBLE);
                Intent intentToto = new Intent(VoeuxActivity.this, JouerActivity.class);
                startActivity(intentToto);
            }
        });
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-21
      • 2017-09-08
      • 1970-01-01
      • 2021-10-07
      • 2016-12-08
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      相关资源
      最近更新 更多