0

最初のアクティビティのコードは次のとおりです。

package com.android.shopping;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{

    Button btn;
    ListView lista;
    TextView tekst;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button) findViewById(R.id.button1);
        lista=(ListView) findViewById(R.id.listView1);
        btn.setOnClickListener(this);
        tekst=(TextView) findViewById(R.id.textView1);
    }

    @Override
    public void onClick(View v) {
        Intent i=new Intent(this, DetailsActivity.class);
        startActivityForResult(i, RESULT_OK);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==RESULT_OK){
        String item=data.getStringExtra("data").toString();
        tekst.setText(item.toString());
    }

    }
    }

そして2番目のもの:

package com.android.shopping;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class DetailsActivity extends Activity implements OnClickListener{
    Button save;
    EditText details;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_details);
        save=(Button) findViewById(R.id.button1);
        details=(EditText) findViewById(R.id.editText1);
        save.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent in=new Intent();
        in.putExtra("data", details.getText().toString());
        setResult(RESULT_OK, in);
        finish();

    }


}

したがって、ボタンのある最初のアクティビティで、2 番目のアクティビティを呼び出します。ユーザーはテキストフィールドに何かを入力し、ボタンをクリックして最初のアクティビティに戻ります。そして、彼が入力したテキストは、最初のアクティビティの textView に表示されるはずですが、そうではありません。それを修正するのを手伝ってください。

4

2 に答える 2

1

MainActivityクラスでは、開始する行を変更する必要がありDetailsActivityます

「startActivityForResult(i, 1);」

RESULT_OK実際の値が -1 の場合は使用しないでください。SDK ドキュメントでは、2 番目のパラメーターとして負の値を使用すると、startActivityForResult単に として扱われると記載されていstartActivityます。そのため、結果を取得できませんDetailsActivity

ちなみに、2番目のパラメータはrequest_codeです。request_code と result_code を同じにするのは得策ではないと思います。

于 2012-08-11T15:53:22.403 に答える
0

あなたのコードは setResult() と finish() を超えていますか?

onActivityResult()startActivityForResult(<new_activity_context>)あなたとsetResult()新しいアクティビティで呼び出されます。

また、あなたManifestが持っていないことを確認できますandroid:launchMode="singleInstance"か?

于 2012-08-11T15:31:12.597 に答える