[英]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.