簡體   English   中英

如何將數據從一個活動傳遞到 Android 中的另一個活動

[英]How to pass data from one activity to another activity in Android

我是安卓的新手。 我想創建一個使用 ServerSocket 將 user1 位置發送到 user2 的應用程序。

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();

我在服務器端以這種方式拆分緯度和經度

                    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);
                        }
                    }

我存儲在這兩個變量中

                    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);

我想將這些變量從這里發送到包含地圖的主要活動

//  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();
                }
            }
        }
    }
}

我如何將 a 和 b 傳遞給主要活動。

通過意圖傳遞數據。

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);

要將數據從一個 Activity 傳遞到另一個 Activity,您可以在 Intent 中使用 Extras。

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

您可以發送此處列出的二進制、文本和多個片段, http://developer.android.com/training/sharing/send.html

要在下一個活動中接收數據,在活動的 oncreate 方法中,

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

如果您想保留數據,實現此目的的最簡單方法是將其保存在共享首選項中。

開發人員鏈接有關於如何實現這一點的很好的信息 - http://developer.android.com/training/basics/data-storage/shared-preferences.html

要寫入數據,

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

要讀取數據,

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);

祝一切順利

使用 Intent 將數據從一個活動傳遞到另一個活動

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


在 onCreate() 的第二個活動中

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

在 Android 中,用戶界面是通過一個 Activity 顯示的。 活動用於向用戶表示數據並允許用戶交互。 在一個 android 應用程序中,我們可以有多個 Activity 並且可以相互交互。 在活動交互期間,我們可能需要將數據從一個活動傳遞到另一個活動。

現在,要將數據從一個活動傳遞到 android 中的另一個活動,您需要執行以下操作:

您可以使用 Intent 將數據從一個活動發送到另一個活動。 意圖包含操作和可選的附加數據。 可以使用意圖 putExtra() 方法將數據傳遞給其他活動。 數據作為附加項傳遞並且是鍵/值對。 鍵始終是一個字符串。 作為值,您可以使用原始數據類型 int、float、chars 等。我們還可以將 Parceable 和 Serializable 對象從一個活動傳遞到另一個活動。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM