无法同时将两个字符串从一个 activity 传递到另一个 activity
Cannot pass two strings from one activity to another activity at same time
我有两个活动 Select 和上传。我将两个字符串 id 和 scan_id 从一个 activity 传递给另一个。当我单独传递 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
你应该这样尝试:
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;
这看起来像空字符串。
你的逻辑是正确的,但是下面的代码有问题
public static String EXTRA_MESSAGE_ID;
public static String EXTRA_MESSAGE_SCAN;
您没有为 both 变量赋值。所以默认情况下两个变量都有空值。所以当你输入值时,第二个会覆盖它。因为两个 varable 相同的键作为空白值
因此,尝试使用给变量赋予唯一值。
public static String EXTRA_MESSAGE_ID = "MSG_ID";
public static String EXTRA_MESSAGE_SCAN = "MSG_SCAN";
希望你明白。
用相同的值
初始化两个activity中的字符串
public static String EXTRA_MESSAGE_ID="something1";
public static String EXTRA_MESSAGE_SCAN="something2";
我有两个活动 Select 和上传。我将两个字符串 id 和 scan_id 从一个 activity 传递给另一个。当我单独传递 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
你应该这样尝试:
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;
这看起来像空字符串。
你的逻辑是正确的,但是下面的代码有问题
public static String EXTRA_MESSAGE_ID;
public static String EXTRA_MESSAGE_SCAN;
您没有为 both 变量赋值。所以默认情况下两个变量都有空值。所以当你输入值时,第二个会覆盖它。因为两个 varable 相同的键作为空白值 因此,尝试使用给变量赋予唯一值。
public static String EXTRA_MESSAGE_ID = "MSG_ID";
public static String EXTRA_MESSAGE_SCAN = "MSG_SCAN";
希望你明白。
用相同的值
初始化两个activity中的字符串public static String EXTRA_MESSAGE_ID="something1";
public static String EXTRA_MESSAGE_SCAN="something2";