在我的 Activity 中,我有一个 TextView 和两个校准按钮和 wifi。两个按钮都将进入扫描 Activity 以获得一些结果。不同之处在于,校准按钮会将结果保存到读数表,而 wifi 按钮会将结果保存到 wifi 表。但这两个按钮都只能将其插入到阅读表中。
这是 Activity 类
calibrate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if(db.getFriendlyWifis(building).isEmpty()) {
Context context = getApplicationContext();
CharSequence text = "Select one or more Friendly WiFi";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
else {
Intent intent = new Intent(getApplicationContext(), Scan.class);
intent.putExtra("POSITION_NAME", positionName.getText().toString());
intent.putExtra("isLearning", isLearning);
intent.putExtra("NUMBER_OF_SECONDS", readingCount);
startActivityForResult(intent, SCAN_REQUEST);
}
}
});
wifi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if(db.getFriendlyWifis(building).isEmpty()) {
Context context = getApplicationContext();
CharSequence text = "Select one or more Friendly WiFi";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
else {
Intent intent = new Intent(getApplicationContext(), Scan.class);
intent.putExtra("POSITION_NAME", positionName.getText().toString());
intent.putExtra("isLearning", isLearning);
intent.putExtra("NUMBER_OF_SECONDS", readingCount);
startActivityForResult(intent, SCAN_REQUEST);
}
}
});
@Override
protected void onActivityResult(int requestCode, int result, Intent intent) {
if(requestCode == 0){
if(result == RESULT_OK){
positionData = (PositionData) intent
.getSerializableExtra("PositionData");
Log.v("Before db : ", positionData.toString());
db.addReadings(building, positionData);
positions = db.getPositions(building);
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, positions);
positionsList.setAdapter(arrayAdapter);
super.onActivityResult(requestCode, result, intent);
}
}
if(requestCode == 1){
if(result == RESULT_OK){
positionData = (PositionData) intent
.getSerializableExtra("PositionData");
Log.v("Before db : ", positionData.toString());
db.addWifi(building, positionData);
positiond = db.getWifi(building);
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, positiond);
positionsList.setAdapter(arrayAdapter);
super.onActivityResult(requestCode, result, intent);
}
}
}
最佳答案
您在两个 startActivityForResult()
上使用相同的请求代码 SCAN_REQUEST
。
在 calibrate.setOnClickListener()
中,调用 startActivityForResult
,如下所示:startActivityForResult(intent, 0);
。
在 wifi.setOnClickListener
中,调用 startActivityForResult
,如下所示:startActivityForResult(intent, 1);
或者,使用分配有 0 和 1 的相应变量来代替 0 和 1。
关于java - 多个 Activity 结果不会添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57353574/