これを行う最も自然な方法は、android.app.Applicationの独自のサブクラスを提供し、それを使用して共有データを保存することです。次に、最初のタブがデータ構造の値を設定し、2番目のタブがそれらを読み取り、それらを使用して必要な計算を実行します。ここを参照してください:Androidでグローバル変数を宣言する方法は?
このアプローチを採用せず、実際にIntentエクストラを使用してTabHost内のアクティビティ間でデータを渡したいと仮定すると、TabHostsインテント(getParent()。getIntent(を介してアクセス)を使用する次のハックのようなことができます。 ))データをやり取りします。
public class Tab1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_one);
Button button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
EditText x = (EditText) findViewById(R.id.x);
EditText y = (EditText) findViewById(R.id.y);
int a = Integer.parseInt(x.getText().toString());
int b = Integer.parseInt(y.getText().toString());
Intent i = getParent().getIntent();
i.putExtra("a", a);
i.putExtra("b", b);
i.putExtra("tab", 1);
TabActivity ta = (TabActivity) Tab1.this.getParent();
ta.getTabHost().setCurrentTab(1);
}
});
}
}
public class Tab2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView result = new TextView(this);
Intent i = getParent().getIntent();
int a = i.getIntExtra("a", 0);
int b = i.getIntExtra("b", 0);
int sum = a + b;
result.setText(Integer.toString(sum));
setContentView(result);
}
}