0

通貨アプリを作成しようとしています。メイン アクティビティにボタンがあり、ボタンをクリックすると、通貨コンバーターのようなダイアログ ボックスが開きます。私の問題は、メイン アクティビティから開かれたダイアログからメイン アクティビティのテキストビューの値を取得できないことです。

これは、メインアクティビティからダイアログを開く方法です

 Button calc = (Button) findViewById(R.id.btn_converter);
    calc.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Intent myIntent = new Intent(MainActivity.this, Calculator.class);
            MainActivity.this.startActivity(myIntent);
        }
    });

これは、ダイアログからテキストビューの値を読み取ろうとしている方法です

Textview t1 = (TextView) findViewById(R.id.txt_cad_alis)

ただし、「t1」は常に null です。私は何を間違っていますか?

4

6 に答える 6

1

2 番目のアクティビティから、最初のアクティビティにある Textview t1 にアクセスしようとしています。これが、常に null である理由です。

ボタンがクリックされたときに TextView から値を取得し、インテントに入れる必要があります。

Button calc = (Button) findViewById(R.id.btn_converter);
calc.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        Textview t1 = (TextView) findViewById(R.id.txt_cad_alis);
        String value = t1.getText().toString();
        Intent myIntent = new Intent(MainActivity.this, Calculator.class);
        intent.putExtra("aKey", value);
        MainActivity.this.startActivity(myIntent);
    }
});

次に、2 番目のアクティビティの onCreate() メソッドで、次のように値を取得できます。

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    Intent i = getIntent();
        if (i.hasExtra("aKey")){
             String value = i.getStringExtra("aKey");   
        }
  }
于 2013-06-24T14:10:36.633 に答える
1

t1 TextView のクラス属性を宣言し、MainActivity の onCreate() でその参照を取得します。次に、CalculatorActivity を開始する直前に、t1 の値を取得して Intent に渡します。この場合、「myIntent」を介して。それが役に立てば幸い。

于 2013-06-24T14:10:56.007 に答える
1

View別のアクティビティに属する にアクセスすることはできません。代わりにできることは、アクティビティを開始する前に値を読み取り、インテント エクストラを使用して 2 番目のアクティビティに送信することです。

Intent myIntent = new Intent(MainActivity.this, Calculator.class);
myIntent.putExtra("value", t1.getText().toString());
MainActivity.this.startActivity(myIntent);

あなたのCalculatorクラスでは、値を取得するのは簡単です:

protected void onCreate(Bundle savedInstanceState) {
    ...
    String textViewValue = getIntent().getStringExtra("value");
}
于 2013-06-24T14:13:11.250 に答える