2

からいくつかの値を取得し、Activityそれらを で取得しています が呼び出されましたが、受信したデータはonActivityResult()onActivityResult()null CODEMainActivity

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    // TODO Auto-generated method stub

    if(item.getItemId() == R.id.action_settings){
        Intent intent = new Intent(MainActivity.this, AddDetailActivity.class);
        startActivityForResult(intent, request_code);
    }
    return true;
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == request_code){
        if(resultCode == RESULT_OK){

            String name = data.getExtras().getString(AddDetailActivity.NAME_KEY);
            String address = data.getExtras().getString(AddDetailActivity.ADDRESS_KEY);

            Toast.makeText(MainActivity.this, "Name is : " + name + " Address : " + address, Toast.LENGTH_LONG).show();

                        }
    }
}

これは、次のActivityようなデータを取得する 2 番目です。

public class AddDetailActivity extends Activity {

public static final String NAME_KEY = "U-name";
public static final String ADDRESS_KEY = "add";

protected EditText name_et, address_et;
protected String put_name, put_address;
protected Button button = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_detail);

    name_et = (EditText) this.findViewById(R.id.name_editText);
    address_et = (EditText) this.findViewById(R.id.address_editText);

    put_name = name_et.getText().toString();
    put_address = address_et.getText().toString();
    //put_type = null;

    button = (Button) findViewById(R.id.add_button);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();

            intent.putExtra(NAME_KEY, put_name);
            intent.putExtra(ADDRESS_KEY, put_address);
            setResult(RESULT_OK, intent);

            finish();
        }
    });
}}

このバグを解決する方法、ありがとう

4

3 に答える 3

7

に変更を加えるだけですAddDetailActivity.java

これはonClickメソッド内にある必要があります

put_name = name_et.getText().toString();
put_address = address_et.getText().toString();

クリック時の方法は次のようになります

button.setOnClickListener(new View.OnClickListener() {

        @Override
           public void onClick(View arg0) {
            // TODO Auto-generated method stub

            put_name = name_et.getText().toString();
            put_address = address_et.getText().toString();
            // put_type = null;

            Intent intent = new Intent();

            intent.putExtra(NAME_KEY, put_name);
            intent.putExtra(ADDRESS_KEY, put_address);
            setResult(RESULT_OK, intent);

            finish();
        }
    });
于 2013-07-02T04:44:59.733 に答える
3

取得コードをボタンクリック内に移動します

 button = (Button) findViewById(R.id.add_button);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            put_name = name_et.getText().toString();
            put_address = address_et.getText().toString();
            Intent intent = new Intent();

            intent.putExtra(NAME_KEY, put_name);
            intent.putExtra(ADDRESS_KEY, put_address);
            setResult(RESULT_OK, intent);

            finish();
        }
    });

またonActivityResult、以下の変更を行います

    String name = data.getExtras().getString("U-name");
    String address = data.getExtras().getString("add");
于 2013-07-02T04:45:54.057 に答える
0

公開静的変数と Android アクティビティのライフサイクル管理

これを参照してください。アクティビティ B が終了したら、そのアクティビティの静的変数を使用しています。

AddDetailActivity.NAME_KEY が利用できないので、代わりにこれを行います

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == request_code){
        if(resultCode == RESULT_OK){

            String name = data.getExtras().getString("U-name");
            String address = data.getExtras().getString("add");

            Toast.makeText(MainActivity.this, "Name is : " + name + " Address : " + address, Toast.LENGTH_LONG).show();

                        }
    }
于 2013-07-02T04:48:34.423 に答える