在选项卡布局中传输2个活动之间的数据

时间:2012-05-06 05:52:21

标签: android google-maps android-intent

我正在实施健身应用。我有这个应用程序的标签布局,第一个标签显示位置(纬度,经度),速度和其他状态,第二个标签显示谷歌地图,其中运行路线将在地图中显示为折线。

第一个标签活动有一个位置管理器,可以接收新位置。

我的问题是:如何将第一个标签活动中从位置管理器收到的数据传输到谷歌地图标签活动?

据我所知,通过使用intent.putExtra()和startActivity()可以在两个活动之间传输数据,但是通过调用startActivity()我会立即转到地图活动吗?但我想更新地图中的折线并保留在状态选项卡中。

任何提示?

提前致谢:)

3 个答案:

答案 0 :(得分:2)

创建一个Global classdeclare static varible并为其指定值并使用另一个类。 另一种方式

Intent i =new Intent()setClass(this, ListViewerIncompleted.class);
i.putStringArrayListExtra(name, value);

答案 1 :(得分:1)

好的,我用那段代码解决了这个问题:

在我的登录活动(第一个活动)中,我需要传递用户名和密码字符串:

btnLogin.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {               
            String userName = txtUsername.getText().toString();
            String password = txtPass.getText().toString();
            //instance for UserFunctions.
            UserFunctions userFunction = new UserFunctions();
            JSONObject json = userFunction.loginUser(userName, password);
            //Check login response
            try {
                if(json.getString(KEY_REQUESTRESULT)!= null ){
                    txtErrorM.setText("");
                    //Log.e("Passed fine:", "first if condition");
                    String res = json.getString(KEY_REQUESTRESULT);//Obtaining the value 0 or 1 from the KEY loginstatus from JSONObject.
                if(Integer.parseInt(res) == 1){
                    Intent iii = new Intent("com.mariposatraining.courses.MariposaTrainingActivity");
                    Bundle bundle1 = new Bundle();
                    Bundle bundle2 = new Bundle();
                    bundle1.putString("UN", userName);
                    bundle2.putString("PW", password);
                    iii.putExtras(bundle1);
                    iii.putExtras(bundle2);

                    //iii.putExtra("userName", userName);
                    //iii.putExtra("Password", password);                       
                    startActivity(iii);
                    finish();
                    //Log.e("OBJECTOO", json.toString());
                }

我将此字符串发送到TAB HANDLER CLASS,然后发送管理此信息的活动:

public class MariposaTrainingActivity extends TabActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.main);

    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec ; //recurse to the property tabs
    Intent intent; //intent for open tabs

    //created intent for open the class tab1

    intent = new Intent().setClass(this, ListViewerIncompleted.class); //List 2 Incompleted
    spec = tabHost.newTabSpec("ListViewerIncompleted").setIndicator("INCOMPLETED").setContent(intent);
    tabHost.addTab(spec);
    Bundle bundle1 = getIntent().getExtras();
    String userName=bundle1.getString("UN");
    Bundle bundle2 = getIntent().getExtras();
    String password=bundle2.getString("PW");
    Bundle bundle3 = new Bundle();
    Bundle bundle4 = new Bundle();
    bundle3.putString("UN", userName);
    bundle4.putString("PW", password);
    intent.putExtras(bundle3);
    intent.putExtras(bundle4);}}
在课堂上

使用此信息:

 Bundle bundle3 = getIntent().getExtras();
    String userName=bundle3.getString("UN");   //Getting the userName
    Bundle bundle4 = getIntent().getExtras();
    String password=bundle4.getString("PW");

希望这会给你一些想法......

答案 2 :(得分:0)

在目标Activity中使用公共静态变量,可以立即从源Activity访问所需的值。