2017-08-09 2 views
0

dies ist meine erste android app Ich versuche, die sharedpreferences auf reciever Seite in Echtzeit unter dem Code zu aktualisieren ist für mainactivity.javaGemeinsame Voreinstellungen auf Empfängerseite in Echtzeit verbessern?

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     disp =(TextView) findViewById(R.id.textView2); 
     sharedPreferences = getSharedPreferences(MyPREFERENCES,Context.MODE_PRIVATE); 
     String host = sharedPreferences.getString(hostip,""); 

     String clientId = MqttClient.generateClientId(); 
     client = new MqttAndroidClient(this.getApplicationContext(),"tcp://"+host,clientId); 

     try { 
      IMqttToken token = client.connect(); 
      token.setActionCallback(new IMqttActionListener() { 
       @Override 
       public void onSuccess(IMqttToken asyncActionToken) { 
        Toast.makeText(MainActivity.this,"Connected",Toast.LENGTH_LONG).show(); 
       } 
       @Override 
       public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
        Toast.makeText(MainActivity.this,"Connection failed",Toast.LENGTH_LONG).show(); 
       } 
      }); 
     } catch (MqttException e) { 
      e.printStackTrace(); 
     } 
} 

settings.java, die der Senderseite

SharedPreferences sharedpreferences; 
    public static final String MyPREFERENCES = "MyPrefs" ; 
    public static final String hostip = "hostipkey" ; 
    public static final String topic = "topickey" ; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     editText1 = (EditText) findViewById(R.id.ipadd); 
     editText2 = (EditText) findViewById(R.id.api); 
     sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 

     submit=(Button)findViewById(R.id.submit); 



     submit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String host = editText1.getText().toString(); 
       String api = editText2.getText().toString(); 
       SharedPreferences.Editor editor = sharedpreferences.edit(); 
       editor.putString(hostip, host); 
       editor.putString(topic, api); 
       editor.apply(); 
       Toast.makeText(settings.this,"Done",Toast.LENGTH_LONG).show(); 
      } 
     }); 

    } 

ist Der obige Code funktioniert gut, aber das Problem, mit dem ich konfrontiert bin, ist, dass meine Daten in gemeinsamen Präferenzen nicht auf der Empfängerseite in Echtzeit aktualisiert werden. Um die Daten zu erhalten, musste ich die App neu starten, damit meine neuen Werte in der Hauptaktivität aktualisiert werden. Jede Hilfe in Bezug auf diese ist viel

Grüße saif

Antwort

0

versuchen, den Wert in onResume in MainActivity zu aktualisieren geschätzt wird es funktionieren.

+0

Vielen Dank Sie ein Lebensretter sir sind –

+0

Sie Willkommen :) sind –

0

Muthukishnan hat Recht, weil onResume() nach der Erstellung und dem Neustart aufgerufen wird, onCreate() nur, wenn Aktivität erstellt wird.

See: Application Lifecircle

Verwandte Themen