繁体   English   中英

无法同时将两个字符串从一个活动传递到另一个活动

[英]Cannot pass two strings from one activity to another activity at same time

我有两个活动:选择和上传。 我将两个字符串id和scan_id从一个活动传递到另一个活动。 当我单独传递ID时,该值正确传递。 但是,当我尝试传递两个值时,一个值将覆盖另一个值。 有没有单独的方法来传递两个字符串?

SelectActivity.java

public class SelectActivity extends Activity {
String v1;
public static String EXTRA_MESSAGE_ID;
public static String EXTRA_MESSAGE_SCAN;
int flag;
String strflag;

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                                    .permitAll()
                                    .build();


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

    Bundle b = getIntent().getExtras();
    EditText ed=(EditText)findViewById(R.id.patient_id);
    ed.setText(b.getCharSequence("Contents"));

    Button button = (Button) findViewById(R.id.button1);
    StrictMode.setThreadPolicy(policy);

    Button CTbutton = (Button) findViewById(R.id.CTScan);
    CTbutton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
            flag=1;
            strflag = String.valueOf(flag);
            Log.e("log_tag", "sel id"+flag);
            Log.e("log_tag", "sel scan"+v1);

            Intent intent = new Intent(SelectActivity.this,MainActivity.class);
            intent.putExtra(EXTRA_MESSAGE_ID,v1);
            intent.putExtra(EXTRA_MESSAGE_SCAN,strflag);
            startActivity(intent);
        }
    });
}
}

MainActivity.java

public class MainActivity extends Activity {    
  private static final String TAG = MainActivity.class.getSimpleName();

  private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;

  public static final int MEDIA_TYPE_IMAGE = 1;

  private Uri fileUri;
  private Button btnCapturePicture;
  public static String EXTRA_MESSAGE_ID;
  public static String EXTRA_MESSAGE_SCAN;
  String message_id;
  String message_scan;

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

    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(getResources().getString(R.color.action_bar))));
    Intent intent = getIntent();
    message_id = intent.getStringExtra(SelectActivity.EXTRA_MESSAGE_ID);
    message_scan = intent.getStringExtra(SelectActivity.EXTRA_MESSAGE_SCAN);

    Log.e("log_tag", "id"+message_id);
    Log.e("log_tag", "scan"+message_scan);

    btnCapturePicture = (Button) findViewById(R.id.btnCapturePicture);
   /**
    * Capture image button click event
    */
    btnCapturePicture.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        captureImage();
      }
    });
  }
}

该logcat看起来像这样:

04-01 10:57:43.671: E/log_tag(12649): connection success 
04-01 10:57:50.374: E/log_tag(12649): sel id1
04-01 10:57:50.374: E/log_tag(12649): sel scan2
04-01 10:57:50.403: E/log_tag(12649): id1
04-01 10:57:50.403: E/log_tag(12649): scan1

使用相同的值初始化两个活动中的字符串

public static String EXTRA_MESSAGE_ID="something1";

public static String EXTRA_MESSAGE_SCAN="something2";

您的逻辑正确,但以下代码有问题

public static String EXTRA_MESSAGE_ID;
public static String EXTRA_MESSAGE_SCAN;

您没有将值分配给both变量。 因此默认情况下,两个变量都为空值。 因此,当您输入该值时,第二个值将覆盖它。 因为两个变量的键都与空白值相同,所以,请尝试使用给变量赋予唯一值。

public static String EXTRA_MESSAGE_ID = "MSG_ID";
public static String EXTRA_MESSAGE_SCAN = "MSG_SCAN";

我希望你明白。

您应该这样尝试:

SelectActivity中的更改:

 public static String EXTRA_MESSAGE_ID="ExtraMsgId";
 public static String EXTRA_MESSAGE_SCAN="ExtraMsgScan";

不应该这样。 如果你这样给

public static String EXTRA_MESSAGE_ID;
public static String EXTRA_MESSAGE_SCAN;

这看起来像是空字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM