Autore Topic: Activity Preferences Protected o altro?  (Letto 118 volte)

Offline nio74

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung S5
  • Sistema operativo:
    Windows 10
Activity Preferences Protected o altro?
« il: 17 Novembre 2016, 07:19:03 CET »
0
Buon Giorno,sto creando una activity dei sttaggi della mia app,volevo dopo appunto dopo usarli dove mi servono sulle varie activity.Per usarle le ho dichiarate come Protected, secondo voi è corretto afre cosi? Vi posto un po di codice:

Classe Settaggi:

Codice: [Seleziona]
public class Setting extends AppCompatActivity {

    private EditText etSms1,etSms2,etIpServer;
    private Button btnSalvaSettaggi;

    // Identificatore delle preferenze dell'applicazione
    protected final static String MY_PREFERENCES = "MyPref";
    // Costante relativa al nome della particolare preferenza
    protected final static String IP_SERVER = "ip_server";
    protected final static String TEXT_SMS1 = "testoSms_1";
    protected final static String TEXT_SMS2 = "testoSms_2";

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

        etIpServer = (EditText)findViewById(R.id.et_Ip_Server);
        etSms1 = (EditText)findViewById(R.id.et_sms1);
        etSms2 = (EditText)findViewById(R.id.et_sms2);

        //carico i dati sui vari settaggi

        getdati();

        btnSalvaSettaggi = (Button)findViewById(R.id.btn_salvasetting);
        btnSalvaSettaggi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              salvasettaggi();
            }
        });
    }

    private void getdati() {
        // Leggiamo le Preferences
        SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
        // Leggiamo l'informazione associata alla proprietà TEXT_DATA
        String tpServer = prefs.getString(IP_SERVER, "Nessun Ip inserito!");
        String textSms1 = prefs.getString(TEXT_SMS1, "Nessun messaggio inserito!");
        String textSms2 = prefs.getString(TEXT_SMS2, "Nessun messaggio inserito!");
        // Lo impostiamo alla TextView

        etSms1.setText(textSms1);
        etSms2.setText(textSms2);
        etIpServer.setText(tpServer);



    }


    private void salvasettaggi() {
        // Otteniamo il riferimento alle Preferences
        SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
        // Otteniamo il corrispondente Editor
        SharedPreferences.Editor editor = prefs.edit();
        // Modifichiamo il valore con quello inserito nell'EditText
        CharSequence txtIpServer = etIpServer.getText();
        CharSequence txtsms1 = etSms1.getText();
        CharSequence txtsms2 = etSms2.getText();
        if (txtIpServer != null) {
            // Lo salviamo nelle Preferences
            editor.putString(IP_SERVER, txtIpServer.toString());
            editor.commit();

            if (txtsms1 != null) {
                // Lo salviamo nelle Preferences
                editor.putString(TEXT_SMS1, txtsms1.toString());
                editor.commit();
               
            }
            if (txtsms2 != null) {
                // Lo salviamo nelle Preferences
                editor.putString(TEXT_SMS2, txtsms2.toString());
                editor.commit();
                Toast.makeText(Setting.this, "Setting Salvati", Toast.LENGTH_LONG).show();
            }
        }
    }
}


Questo è il codice che uso in un'altra Activity:

Codice: [Seleziona]
SharedPreferences prefs = getSharedPreferences(Setting.MY_PREFERENCES, Context.MODE_PRIVATE);
        String ip = prefs.getString(Setting.IP_SERVER, "Nessun Ip inserito!");

Offline iClaude

  • Utente normale
  • ***
  • Post: 177
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S5
  • Sistema operativo:
    Windows 10
Re:Activity Preferences Protected o altro?
« Risposta #1 il: 17 Novembre 2016, 10:24:40 CET »
0
Se devi utilizzarle solo in classi contenute nello stesso package direi di sì.
Altrimenti puoi anche dichiarare le costanti public. Utilizzare variabili globali non è una buona tecnica di programmazione, ma x le costanti è frequente dichiararle public.

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1363
  • Respect: +156
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Activity Preferences Protected o altro?
« Risposta #2 il: 17 Novembre 2016, 12:34:16 CET »
0
Dipende da dove devi accedere alle costanti.
Se solo da quella classe -> private
Se solo dale classi dello stesso package dalle derivate -> protected
Se da tutte le classi contenute nello stesso package -> package private (visibilità di default)
Se da tutte le classi da ovunque -> public

Schemino ufficiale
« Ultima modifica: 17 Novembre 2016, 12:37:23 CET da blackgin »
Postate il LogCat LogCat LogCat LogCat LogCat

Offline nio74

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung S5
  • Sistema operativo:
    Windows 10
Re:Activity Preferences Protected o altro?
« Risposta #3 il: 17 Novembre 2016, 15:02:43 CET »
0
Grazie Gentilissimi