简体   繁体   English

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

[英]Multiple activity result won't add data

In my activity i have one TextView and two buttons calibrate and wifi. 在我的活动中,我有一个TextView和两个校准和wifi按钮。 Both button will go to scan activity to get some result. 两个按钮都将进入扫描活动以获得一些结果。 the differences is that calibrate button will save the result to reading table and wifi button will save the result to wifi table. 区别在于校准按钮会将结果保存到读数表,而wifi按钮会将结果保存到wifi表。 But both button only insert it to reading table. 但是两个按钮都只能将其插入到读取表中。

Here's the activity class 这是活动课

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

        }
        }

you are using the same request code SCAN_REQUEST on both the startActivityForResult() . 您在两个startActivityForResult()上都使用了相同的请求代码SCAN_REQUEST

In calibrate.setOnClickListener() , call startActivityForResult like this: startActivityForResult(intent, 0); calibrate.setOnClickListener() ,像这样调用startActivityForResultstartActivityForResult(intent, 0); .

In wifi.setOnClickListener , call startActivityForResult like this: startActivityForResult(intent, 1); wifi.setOnClickListener ,像这样调用startActivityForResultstartActivityForResult(intent, 1);

Or, instead of 0 and 1, use the corresponding variables to which 0 and 1 are assigned to. 或者,使用0和1分配给的对应变量代替0和1。

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

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