如何将数据从一个活动传递到Android中的另一个活动

时间:2016-04-01 05:28:01

标签: android

我是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传递给主要活动。

4 个答案:

答案 0 :(得分:1)

通过意图传递数据。

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

答案 1 :(得分:0)

要将数据从一个Activity传递到另一个Activity,您可以在Intent中使用Extras。

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

您可以发送二进制文本,文本和此处列出的多个部分, documentation

要在活动的oncreate方法中接收下一个活动中的数据,

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

如果您想要保留数据,最简单的方法是将其保存在共享首选项中。

开发人员链接提供了有关如何实施此操作的详细信息 - http://developer.android.com/training/sharing/send.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);

一切顺利

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在Android用户界面中通过活动显示。 Activity用于向用户表示数据并允许用户交互。在Android应用程序中,我们可以有多个活动,并且可以相互交互。在活动交互期间,我们可能需要将数据从一个活动传递到另一个活动。

现在,要将数据从一个活动传递到android中的其他活动,您需要执行以下操作:

您可以使用Intent将数据从一个活动发送到另一个活动。 intent包含操作和可选的附加数据。可以使用intent putExtra()方法将数据传递给其他活动。数据作为附加项传递,是键/值对。密钥始终是String。作为值,您可以使用原始数据类型int,float,chars等。我们还可以将Parceable和Serializable对象从一个活动传递给另一个活动。

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