2

私は同様の質問を読み通しましたが、このような質問は見当たりません。私は2つのタブがある単純な計算機アプリケーションを持っています。それぞれに独自のアクティビティクラスがあります。私は最初、onClickが入力を受け取り、それらを結果画面に渡し、計算を行って結果を表示するボタンを使用してこれを作成しました。今、私はTabHostでそれをやりたいと思います。2つの画面をすべて設定しましたが、入力を取得して結果アクティビティに渡し、計算を実行して結果の値を表示する方法がわかりません。

よろしくお願いしますDean-O

4

1 に答える 1

4

これを行う最も自然な方法は、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);
 }
}
于 2010-12-24T05:37:38.967 に答える