SharedPreferences保存在EditText中输入的文本,并在另一个活动中的TextView中显示它 [英] SharedPreferences save a text entered in an EditText and display it in a TextView in another activity

查看:87
本文介绍了SharedPreferences保存在EditText中输入的文本,并在另一个活动中的TextView中显示它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Android开发的初学者,但是在一些TextView中显示一些文本时,保存更改存在问题.但是对我来说更难了. 为了说明简单,我有2个活动,Activity1是主要的,Activity2是用户信息. 在活动1(主)中,用户单击按钮(登录"),然后继续进行活动2,在此用户可以输入他的个人信息,然后单击按钮(保存数据"),然后将其数据添加到数据库(SQLite)中,然后,当用户单击另一个按钮(转到")时,他返回Activity1,我使用了一个意图,以便在Activity1的TextView上以欢迎" +昵称显示他的昵称. 但是,当用户退出应用程序时,没有任何保存,更改没有保存为昵称,但是昵称始终在我的数据库中.

I'm beginner in Android development and I have an issue with save changement with some texts display in some TextViews. But one is more difficult for me. For explain simple, I have 2 activities, Activity1 is the main, Activity2 is the user informations. In Activity1 (Main) the user clic the button ("login") then he go on Activity2 here user can enter his personal informations and he click on a button ("save data") then I add his datas on a database (SQLite), then when the user click on another button ("go") he return on Activity1 I use an intent in order to show his nickname on a TextView in the Activity1 with a "Welcome" + nickname. But when the user quit the app, there's no save, the changement hasn't save with the nickname, but the nickname are always in my database.

我将向您显示一些代码: 活动2:

I will show u some code: Activity2:

public class ProfilActivity extends Activity {

EditText editNickname; // We just work on the nickname so I just keep it
MyDatabase myDb;
Button bAddData, go;
public SharedPreferences prefs;
private String nicktobesaved;

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.activity_profil);
    myDb = new MyDatabase(this);
    prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);

    editNickname = (EditText) findViewById(R.id.pseudo2);
    bAddData = (Button) findViewById(R.id.ajouter);

    nicktobesaved = prefs.getString("nickname", "");
    bAddData.setEnabled(prefs.getBoolean("isEnabled", true) ? true : false);

    AddData();
} // End onCreate()

public void changeNickname(View v) {
    // I delete this method who passed an intent
}

public void AddData() { // When user click on bAddData button
    bAddData.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    nicktobesaved = prefs.getString("nickname", "");
                    nicktobesaved = editPseudo.getText().toString();

// The following code is just for save data on my database SQLite
                    boolean isInserted = myDb.insertData(editNickname.getText().toString());
                    if (isInserted == true) {
                        Toast.makeText(ProfilActivity.this, "Data saved", Toast.LENGTH_LONG).show();
                        prefs.edit().putBoolean("isEnabled", false).apply();
                        bAddData.setEnabled(false);
                    } else {
                        Toast.makeText(ProfilActivity.this, "Data not saved", Toast.LENGTH_LONG).show();
                    }
                }
            }
    );
}
}

Activity1(主要活动):

Activity1 (Main activity):

public class MainActivity extends Activity {

TextView tv;
Button login;
public SharedPreferences prefs;
private String nickname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
    nickname = prefs.getString("nickname", "");

    login = (Button) findViewById(R.id.connexion);
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intentLogin = new Intent(MainActivity.this, ProfilActivity.class);
            startActivity(intentLogin);
        }
    });

    tv = (TextView)findViewById(R.id.pseudo);

if(nickname.equals("")) {
        tv.setText("Welcome");
    } else {
        tv.setText("Welcome " + nickname);
    }
}
}

Pseudo =法语的昵称, Bienvenue =法文欢迎, 谢谢大家的帮助,希望您能理解我的问题. 皮科罗

Pseudo = nickname in french, Bienvenue = welcome in french, Thank u all for yo help, I hope u could understand my question. Pikkoro

推荐答案

我建议您使用Sharedpreferences来存储基本信息,并阅读一些有关如何在Android上保存数据的教程或文档.在这里,我使用了Sharedpreferences进行了示例.希望对您有帮助!

I would recommend you to use Sharedpreferences to store basic information, and read some tutorial or documentation about how to save data on Android. Here I made an example using Sharedpreferences. Hope it helps!

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * Created by Hasan on 4.05.2017.
 */

public class ProfilActivity extends Activity {

    EditText editName, editNickname;
    Button bAddData;
    public SharedPreferences prefs;

    //To be saved elements in sharedpreferences!!!
    private String nicktobesaved, nametobesaved;

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_profil);
        prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);

        editName = (EditText) findViewById(R.id.name);
        editNickname = (EditText) findViewById(R.id.pseudo2);
        bAddData = (Button) findViewById(R.id.ajouter);

        //default values
        nametobesaved=prefs.getString("name", "");
        nicktobesaved=prefs.getString("nickname", "");

        bAddData.setEnabled(prefs.getBoolean("isEnabled", true) ? true : false);

        if(!nametobesaved.equals("")) {
            editName.setText(nametobesaved);
        }
        if (!nicktobesaved.equals("")){
            editNickname.setText(nicktobesaved);

        }

        AddData();
    } // End onCreate()

    public void AddData() { // When user click on bAddData button
        bAddData.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        nametobesaved=prefs.getString("name", "");
                        nicktobesaved=prefs.getString("nickname", "");

                        nametobesaved= editName.getText().toString();
                        nicktobesaved= editNickname.getText().toString();

                        if(nametobesaved.equals("") || nicktobesaved.equals("")){
                            Toast.makeText(ProfilActivity.this, "Fill all spaces", Toast.LENGTH_LONG).show();
                        }else {

                            SharedPreferences.Editor editor = prefs.edit();
                            editor.putString("name", nametobesaved);
                            editor.putString("nickname", nicktobesaved);
                            editor.commit();

                            Toast.makeText(ProfilActivity.this, "Data saved", Toast.LENGTH_LONG).show();
                            prefs.edit().putBoolean("isEnabled", false).commit();


                            bAddData.setEnabled(false);
                        }

                    }
                }
        );
    }
}

将昵称保存到Sharedpreferences后,您需要将其加载到Main活动中.它是这样的:

After saving nickname to the Sharedpreferences you need to load it in Main activity. It goes like this:

public class MainActivity extends Activity {

public static final int PROFIL_REQ = 1;
public static final String PSEUDO="nickname";
TextView tv;
Button login;

    //Sharedpreferences and nick name variables
    private SharedPreferences prefs;
    private String nickname;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView)findViewById(R.id.pseudo);

            //Load or create sharedpreferences
        prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
        nickname = prefs.getString("nickname", "");

        if(nickname.equals("")) {
            tv.setText("Welcome");
        }else{
            tv.setText("Welcome "+ nickname);
        }
    }

那是因为您删除了共享首选项编辑器.

public void AddData() { // When user click on bAddData button
    bAddData.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    nicktobesaved = prefs.getString("nickname", "");
                    nicktobesaved = editPseudo.getText().toString();


//DO NOT DELETE HERE

                                    SharedPreferences.Editor editor = prefs.edit();

                                editor.putString("nickname", nicktobesaved);
                                editor.commit();

// The following code is just for save data on my database SQLite
                    boolean isInserted = myDb.insertData(editNickname.getText().toString());
                    if (isInserted == true) {
                        Toast.makeText(ProfilActivity.this, "Data saved", Toast.LENGTH_LONG).show();
                        prefs.edit().putBoolean("isEnabled", false).apply();
                        bAddData.setEnabled(false);
                    } else {
                        Toast.makeText(ProfilActivity.this, "Data not saved", Toast.LENGTH_LONG).show();
                    }
                }
            }
    );
}

这篇关于SharedPreferences保存在EditText中输入的文本,并在另一个活动中的TextView中显示它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆