Soy nuevo en el desarrollo de Android / Java, por favor, ve con calma.

La aplicación es relativamente simple, es solo una conexión a una base de datos MSQL. Para cada usuario, la configuración de la conexión será diferente, así que creé una nueva Actividad para la configuración. Creo que estoy almacenando los valores de Activity_Settings.xml correctamente y almacenándolos en SharedPreferences. Pero no puedo entender cómo crear una lista para confirmar los cambios.

El objetivo final sería ingresar a la actividad Configuración y mostrar el EditText lleno con los valores de SharedPreferences. Y guardar y salir los volvería a escribir en SharedPreferences.

Esto es lo que tengo para la Actividad. Si alguien pudiera señalarme en la dirección correcta, he verificado https://developer.android.com/training/data-storage/shared-preferences y me confunde más

Settings.Java

public class Settings extends AppCompatActivity {

    // Declaring layout button, edit texts
    EditText ServerName,ServerPort,DatabaseName,ServerPath;
    // End Declaring layout button, edit texts

    @Override
    protected void onCreate(Bundle savedInstanceState)     //Creating Instance for storing data
    {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);    // Fetch from Activity_Settings

        // Getting values from any button or text fields
        ServerName = (EditText) findViewById(R.id.ServerName);
        ServerPort = (EditText) findViewById(R.id.ServerPort);
        DatabaseName = (EditText) findViewById(R.id.DBName);
        ServerPath = (EditText) findViewById(R.id.ServerPath);
        // End Getting values from any button or text fields


        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = preferences.edit();
    //    editor.putString("ServerName","192.168.1.75");
    //    editor.putInt("ServerPort",1433);
    //    editor.putString("DBName","OpenXpos");
    //    editor.putString("ServerPath","\\\\/Server01\\/OpenXpos\\/");

        editor.putString("ServerName", String.valueOf(ServerName));
        editor.putString("ServerPort", String.valueOf(ServerPort));
        editor.putString("DBName", String.valueOf(DatabaseName));
        editor.putString("ServerPath", String.valueOf(ServerPath));


        editor.apply();
    }
}

Activity_Settings.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.android.openretail.stocktake.Settings">

    <Button
        android:id="@+id/save"
        android:layout_width="91dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="52dp"
        android:text="Save Exit"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="39dp"
        android:layout_marginLeft="39dp"
        android:layout_marginTop="88dp"
        android:text="Server Name"
        android:textSize="18sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="39dp"
        android:layout_marginLeft="39dp"
        android:layout_marginTop="20dp"
        android:text="Server Port"
        android:textSize="18sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="39dp"
        android:layout_marginLeft="39dp"
        android:layout_marginTop="23dp"
        android:text="Database Name"
        android:textSize="18sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="39dp"
        android:layout_marginLeft="39dp"
        android:layout_marginTop="22dp"
        android:text="Server Path"
        android:textSize="18sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4" />

    <EditText
        android:id="@+id/ServerName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        android:layout_marginEnd="73dp"
        android:layout_marginRight="40dp"
        android:ems="10"
        android:hint="192.168.X.X"
        android:inputType="textPersonName"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/ServerPort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_marginEnd="73dp"
        android:layout_marginRight="40dp"
        android:ems="10"
        android:hint="Default:1433"
        android:inputType="number"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/ServerName" />

    <EditText
        android:id="@+id/DBName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_marginEnd="73dp"
        android:layout_marginRight="40dp"
        android:ems="10"
        android:hint="OpenXpos"
        android:inputType="textPersonName"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/ServerPort" />

    <EditText
        android:id="@+id/ServerPath"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_marginEnd="73dp"
        android:layout_marginRight="40dp"
        android:ems="10"
        android:hint="\\\\Server01\\OpenXpos\\"
        android:inputType="textPersonName"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/DBName" />

</android.support.constraint.ConstraintLayout>
0
Dave Hamilton 2 dic. 2019 a las 19:47

2 respuestas

Necesita obtener valor de texto de edit-text y comprometerse a

editor.putString("server_name",serverName.getText().toString());
        editor.putString("server_port",serverPort.getText().toString());
        editor.putString("database_name",databaseName.getText().toString());
        editor.putString("server_path",serverPath.getText().toString());
        editor.commit();
1
Damodhar 2 dic. 2019 a las 17:23

Esto debería ser como sigue, primero debe asignar un escucha de clics usando setOnClickListener() en el objeto del botón y luego en onCreate() cargar los datos de la preferencia compartida. y si el usuario hace clic en el botón, se le notificará en la devolución de llamada del oyente donde se guardarán los datos. El código a continuación da la idea general de cómo hacerlo.

 public class Settings extends AppCompatActivity {

        // Declaring layout button, edit texts
        EditText serverName,serverPort,databaseName,serverPath;
        // End Declaring layout button, edit texts
        Button saveButton;

        @Override
        protected void onCreate(Bundle savedInstanceState)     //Creating Instance for storing data
        {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_settings);    // Fetch from Activity_Settings

            // Getting values from any button or text fields
            serverName = (EditText) findViewById(R.id.ServerName);
            serverPort = (EditText) findViewById(R.id.ServerPort);
            databaseName = (EditText) findViewById(R.id.DBName);
            serverPath = (EditText) findViewById(R.id.ServerPath);

            //get the shared preference instance
            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

            saveButton = (Button) findViewById(R.id. save);
            // End Getting values from any button or text fields
            saveButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
            //here save the data
            SharedPreferences.Editor editor = preferences.edit();
         editor.putString("server_name",serverName.getText().toString());
         editor.putString("server_port",serverPort.getText().toString());
      editor.putString("database_name",databaseName.getText().toString());
         editor.putString("server_path",serverPath.getText().toString());
         editor.commit();
               }
            });

         //set the default values saved on load
        serverName.setText(preferences.getString("server_name",""));
        serverPort.setText(preferences.getString("server_port",""));
        databaseName.setText(preferences.getString("database_name",""));
        serverPath.setText(preferences.getString("server_path",""));
        }
    }

Nota: Tampoco asigne nombres de límite a las variables de instancia. Use camelCase siempre

1
vikas kumar 2 dic. 2019 a las 17:31