0

完全なアプリであるMainClassがあります。あるボタンをクリックすると、別のクラス(PopupValores)に移動し、ポップアップのように見せます。このクラスには、整数を入力するEditTextと、このクラスを閉じるためのボタンがあります。私の質問は、そのintをPopupClassに入力して、MainClassで使用する方法です。PopupValoresのコードは次のとおりです。

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class PopupValores extends Activity implements OnClickListener {

TextView texto;
String mensaje;
EditText editable;
Button ok;
public static int cantidad;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.popupvalores);

    ok = (Button) findViewById (R.id.Bok);
    texto = (TextView) findViewById (R.id.textView1);
    editable = (EditText) findViewById (R.id.editText1);
    mensaje = editable.getText().toString();
    ok.setOnClickListener(this);

    ok.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {
            finish();
            return true;
        }
    });


}

public void onClick(View v){
    switch(v.getId()){
    case R.id.Bok:

    String mensaje;
    mensaje = editable.getText().toString();

    cantidad = Integer.parseInt(mensaje);

    texto.setText("New value " + cantidad + ".");

    }
}
}

次に、MainClassでボタンをクリックすると、intが表示されます。

int id, vaas = PopupValores.cantidad;
public void onClick (View v)
{   
posicion = (ImageCell) v;
seleccion = posicion.mCellNumber;

if (seleccion == -1){
    ....
    toast (id + " " + vaas);
    ....
}
}

しかし、PopupValoresで宣言された値を表示する代わりに、0を表示します。ここで何が間違っているのでしょうか。

4

2 に答える 2

1
  1. ポップアップアクティビティを呼び出す必要がありますActivity.startActivityForResult()
  2. ポップアップ アクティビティが終了したら、要求された結果を設定しActivity.setResult()ます (インテントのバンドルにデータを保存できます)。
  3. メインのアクティビティで、データをオーバーライドonActivityResultして取得します
于 2012-05-09T08:24:23.393 に答える
0

その startActivityforResult と呼ばれ、スタックオーバーフローで何度も答えられています

于 2012-05-09T08:22:11.320 に答える