2016-04-01 20 views
-1

übergeben werden Ich bin ein Neuling für Android. Ich möchte eine Anwendung erstellen, die den Standort Benutzer1 mithilfe von ServerSocket an den Benutzer2 sendet.Wie Daten von einer Aktivität zu einer anderen Aktivität in Android

public class ToMain extends Activity { 

    TextView info, infoip, msg; 
    String message =""; 
    ServerSocket serverSocket; 
    String s="",t=""; 
    public Double b,c; 
    public int i; 

    private class SocketServerThread extends Thread { 

      static final int SocketServerPORT = 8080; 
      int count = 0; 

      @Override 
      public void run() { 
       Socket socket = null; 
       DataInputStream dataInputStream = null; 
       DataOutputStream dataOutputStream = null; 

       try { 
        serverSocket = new ServerSocket(SocketServerPORT); 

        ToMain.this.runOnUiThread(new Runnable() { 

         @Override 
         public void run() { 
          info.setText("I'm waiting here: " 
            + serverSocket.getLocalPort()); 
         } 
        }); 

        while (true) { 


         socket = serverSocket.accept(); 
         dataInputStream = new DataInputStream(
           socket.getInputStream()); 
         dataOutputStream = new DataOutputStream(
           socket.getOutputStream()); 

         String messageFromClient = ""; 

         //If no message sent from client, this code will block the program 
         messageFromClient = dataInputStream.readUTF(); 

ich spaltete sich die Breite und Länge auf diese Weise in der Server-Seite

    for(int j=0;j<i;j++){ 

         if(messageFromClient.charAt(j)!='+' && bool==false){ 
          s=s+messageFromClient.charAt(j); 
         } 
         else{ 
          bool=true; 
         } 
         if(bool){ 
          t=t+messageFromClient.charAt(j); 
         } 
        } 

ich in diesen Lagern zwei Variable

    b = Double.parseDouble(s); 
        c = Double.parseDouble(t); 
        ToMain.this.runOnUiThread(new Runnable() { 

         @Override 
         public void run() { 


         } 
        }); 

        String msgReply = "Location Sent!" + count; 
        dataOutputStream.writeUTF(msgReply); 

Ich möchte von hier aus auf die Haupt jene Variable senden Aktivität, die die Karte enthalten

// startActivity(intent); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      final String errMsg = e.toString(); 
      ToMain.this.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 

       } 
      }); 

     } finally { 
      if (socket != null) { 
       try { 
        socket.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 

      if (dataInputStream != null) { 
       try { 
        dataInputStream.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 

      if (dataOutputStream != null) { 
       try { 
        dataOutputStream.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

Wie gebe ich a und b an die Hauptaktivität weiter.

+1

Mögliche Duplikat http://stackoverflow.com/questions/18146614/how-to-send-string-from-one-activity-to-another –

+0

Verwendung sharedPrefrences – Abhishek

+0

Thank u. Es gibt mir eine Fehlermeldung mesg: Nicht statische Methode 'putExtras() kann nicht Referenz aus dem statischen Kontext sein. Hilfe @ Alok Gupta –

Antwort

1

Daten über Intents übergeben.

Intent data = new Intent(this,SecondActivity.class); 
data.putExtra("keyA",a); 
data.putExtra("keyB",b); 
startActivity(data); 

In second activity in onCreate() 
Intent intent = getIntent(); 
Double a = intent.getDoubleExtra("keyA",0); 
Double b = intent.getDoubleExtra("keyB",0); 
+0

Vielen Dank für die Antworten. Es gibt mir eine Fehlermeldung mesg: Nicht statische Methode 'putExtras() kann nicht Referenz aus dem statischen Kontext in putExtra sein. Hilfe –

+0

Ihr Schreiben "Intent" beachten Sie die Hauptstadt I. machen es klein. Ich – crashOveride

+0

für das Objekt, das ich verwendete Absicht –

0

Um Daten von einer Aktivität zu einer anderen zu übertragen, können Sie Extras in Intent verwenden.

Intent intent = new Intent("ACTIVITY_INTENT"); 
intent.putExtra("selection", position); 
startActivity(intent); 

Sie Binary, Text und mehr Stücke hier aufgeführten senden können, http://developer.android.com/training/sharing/send.html

Um die Daten in der nächsten Aktivität in der oncreate Methode der Aktivität,

extras = getIntent().getExtras(); 
int value = extras.getInt("selection"); 

zu erhalten Wenn Sie die Daten beibehalten möchten, speichern Sie sie am einfachsten in Shared Preferences.

Entwickler Link hat gute Informationen darüber, wie dies zu implementieren - http://developer.android.com/training/basics/data-storage/shared-preferences.html

die Daten zu schreiben,

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt(getString(R.string.saved_high_score), newHighScore); 
editor.commit(); 

die Daten zu lesen,

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue); 

alles Gute

+0

können Sie mir bei der Verwendung von SharedPreference helfen. Weil es nicht verwendet werden kann extra –

+0

bitte überprüfen Sie meine aktualisierte Antwort. Put extra ist nur für Absichten, um Daten von einer Aktivität zu einer anderen zu übertragen. Geben Sie den Pre-Stores-Wert frei, den Sie als Schlüssel, Wertpaar benötigen. Bitte lesen Sie über SP in dem Link, den ich angegeben habe. Es ist einfach zu speichern und abzurufen. –

0

Verwenden Sie Intent, um Daten von einem zu übergeben Aktivität zu einer anderen Aktivität

Intent intent = new Intent(this,SecondActivity.class); 
intent .putExtra("key1",value); 
intent .putExtra("key2",value); 
startActivity(intent); 


In zweiter Aktivität in onCreate()

Intent intent = getIntent(); 
Double a = intent.getDoubleExtra("key1",0); // Notice 0 is the default value here 
Double b = intent.getDoubleExtra("key2",0); 
0

In Android Benutzeroberfläche wird durch eine Aktivität angezeigt. Aktivität wird verwendet, um die Daten für den Benutzer darzustellen und ermöglicht Benutzerinteraktion. In einer Android-Anwendung können wir mehrere Aktivitäten haben, die miteinander interagieren können. Während der Interaktion mit Aktivitäten mussten wir möglicherweise Daten von einer Aktivität an eine andere übergeben.

nun in Android-Daten von einer Aktivität zur anderen zu übergeben, müssen Sie folgendes tun:

Sie Daten von einem actvity zum anderen mit einer Absichtserklärung senden. Ein Intent enthält die Aktion und optional weitere Daten. Die Daten können mithilfe der Methode putExtra() in der Absicht an andere Aktivitäten übergeben werden. Daten werden als Extras weitergegeben und sind Schlüssel/Wert-Paare. Der Schlüssel ist immer ein String. Als Wert können Sie die primitiven Datentypen int, float, chars, etc. verwenden. Wir können auch Parcable- und Serializable-Objekte von einer Aktivität zur anderen übergeben.

Intent intent = new Intent(context, YourActivityClass.class); 
intent.putExtra(KEY, <your value here>); 
startActivity(intent); 
Verwandte Themen