【问题标题】:how to send a string from activity2 to activity1?如何将字符串从activity2发送到activity1?
【发布时间】:2011-04-30 09:26:32
【问题描述】:

我在 android 中的应用程序中有一个小/大问题。我有 2 个活动:Activity1 和 Activity2。 Activity1 有一个 TextView 和一个 Button,而 Activity2 有一个 EditText 和一个 Button。从 Activity1 我转到 Acvity2,我想将 EditText 中的文本从 Activity2 发送到 Activity 1。我强制关闭,因为我不知道代码中的顺序。我该怎么办?谢谢

这是我的代码:


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

public class Activity1 extends Activity {
    TextView txt;
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       txt = (TextView) findViewById(R.id.txt);

        Button next=(Button)findViewById(R.id.btn);
        next.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent intent = new Intent(Activity1.this,Activity2.class);
                startActivityForResult(intent, 0);
            }

        });
    }

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

public class Activity2 extends Activity {
    EditText txt2;
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);

        txt2 = (EditText)findViewById(R.id.txt2);
        final Bundle bundle = new Bundle();
        String x=txt2.getText().toString();
        bundle.putString("param",x);
        Button btn2=(Button)findViewById(R.id.btn2);
        btn2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent intent = new Intent(Activity2.this,Activity1.class);
                intent.putExtra(bundle)
                finish();

            }

        });
          }
}

【问题讨论】:

    标签: android android-intent bundle


    【解决方案1】:

    您的代码的一个问题是您没有任何东西来处理第二个活动的结果。 (第一个活动没有onActivityResult。)

    The notepad tutorial 包含一个调用第二个活动并获得结果的不错示例。

    【讨论】:

      【解决方案2】:

      在 Activity1 中 @override onActivityResult。

      并在 Activity2 中写下这个。

      txt2 = (EditText)findViewById(R.id.txt2);

      final Bundle bundle = new Bundle();
      String x=txt2.getText().toString();
      Button btn2=(Button)findViewById(R.id.btn2);
      btn2.setOnClickListener(new View.OnClickListener() {
          public void onClick(View view) {
              Intent intent = new Intent();
              intent.putExtra("param",x);
              setResult(RESULT_OK, intent);
              finish();
          }
      

      【讨论】:

        【解决方案3】:

        在 Activity1 @override onActivityResult.

        并在 Activity2 中写下这个。

        txt2 = (EditText)findViewById(R.id.txt2);
            final Bundle bundle = new Bundle();
            String x=txt2.getText().toString();
            bundle.putString("param",x);
            Button btn2=(Button)findViewById(R.id.btn2);
            btn2.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    Intent intent = new Intent();
                    intent.putExtra("param",x);
                    setResult(RESULT_OK, intent);
                    finish();
        
                }
            });
        

        【讨论】:

        • 在 Activity1 我把这个:@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent);捆绑 b = getIntent().getExtras();文本 = b.getString("参数"); txt.setText(text);} 我仍然有强制关闭。我应该在这个函数中添加什么?
        • 我找到了答案。非常感谢您的帮助。
        • 我可以在同一个 Activity 中有 2 个 onActivityResult() 吗?
        • 不,只有一个。当您执行 startActivityForResult(...) 时,您可以通过分配不同的意图“id”来处理来自不同活动的结果
        • public void onActivityResult(int requestCode, int resultCode, Intent intent){ switch(requestCode){ case 0: // 在这里做你的事情... break; case 1: // 在这里做你的其他事情... break;案例等:休息; } }
        猜你喜欢
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多