多项活动的结果不会添加数据

时间:2019-08-05 06:57:53

标签: java android database android-intent

在我的活动中,我有一个TextView和两个校准和wifi按钮。两个按钮都将进入扫描活动以获得一些结果。区别在于校准按钮会将结果保存到读数表,而wifi按钮会将结果保存到wifi表。但是两个按钮都只能将其插入到阅读表中。

这是活动课

          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);
            }

        }
        }

1 个答案:

答案 0 :(得分:2)

您在两个SCAN_REQUEST上使用相同的请求代码startActivityForResult()

calibrate.setOnClickListener()中,像这样呼叫startActivityForResultstartActivityForResult(intent, 0);

wifi.setOnClickListener中,像这样呼叫startActivityForResultstartActivityForResult(intent, 1);

或者,将0和1分配给它们,而不是0和1。