0

フィットネスアプリを実装しています。このアプリのタブ レイアウトがあります。最初のタブには場所 (緯度、経度)、速度、およびその他のステータスが表示され、2 番目のタブには、実行ルートがマップ内のポリラインとして表示される Google マップが表示されます。

最初のタブ アクティビティには、新しい場所を受け取る場所マネージャーがあります。

私の質問は: 最初のタブ アクティビティでロケーション マネージャーから受け取ったデータを Google マップ タブ アクティビティに転送するにはどうすればよいですか?

私が知っているように、intent.putExtra() と startActivity() を使用すると 2 つのアクティビティ間でデータを転送できますが、startActivity() を呼び出すとすぐにマップ アクティビティに移動しますよね? しかし、マップ内のポリラインを更新し、ステータス タブにとどまりたいです。

ヒントはありますか?

前もって感謝します :)

4

3 に答える 3

2

OneGlobal classを作成し、declare static varibleそれに値を割り当てて、別のクラスを使用します。そして別の方法

Intent i =new Intent()setClass(this, ListViewerIncompleted.class);
i.putStringArrayListExtra(name, value);
于 2012-05-06T06:20:06.620 に答える
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");

これがあなたにアイデアを与えることを願っています...

于 2012-05-06T06:08:48.947 に答える
0

宛先アクティビティで public static 変数を使用して、ソース アクティビティから必要な値にすぐにアクセスできるようにします。

于 2012-05-06T06:07:27.960 に答える