Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用“startActivityForResult”启动不同的活动?_Android_Android Intent - Fatal编程技术网

Android 如何使用“startActivityForResult”启动不同的活动?

Android 如何使用“startActivityForResult”启动不同的活动?,android,android-intent,Android,Android Intent,如何使用startActivityForResult从活动启动多个活动 Public class MainActivity extends Activity{ TextView hasilscan1; Button btnInputPerangkat, btnEditPerangkat; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(save

如何使用
startActivityForResult
活动启动多个
活动

Public class MainActivity extends Activity{

    TextView hasilscan1;
    Button btnInputPerangkat, btnEditPerangkat;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hasilscan1 = (TextView) findViewById(R.id.hasilscan1);
        btnInputPerangkat = (Button) findViewById(R.id.btnInputPerangkat);
        btnEditPerangkat = (Button) findViewById(R.id.btnEditPerangkat);

        btnInputPerangkat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                hasilscan1.setVisibility(TextView.INVISIBLE);
                IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
                scanIntegrator.initiateScan();
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if (scanningResult != null) {
                String scanContent = scanningResult.getContents();
                hasilscan1.setText(scanContent);
                Intent intent = new Intent(this, InputPerangkat.class);
                intent.putExtra("hasilscan1", hasilscan1.getText().toString());
                startActivity(intent);
            } else {
                Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
                btnInputPerangkat.setVisibility(EditText.INVISIBLE);
            }
    }
}

在我的情况下,我有2个按钮在1布局,当按钮点击,它将扫描条码和结果扫描将显示在另一个布局。我尝试了1个按钮并成功了,但我不知道如何实现2个按钮。

您需要为每个
startActivityForResult(意图,请求\u代码)设置不同的请求代码
并在您的
onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);   
    if(requestCode == IntentIntegrator.REQUEST_CODE && resultCode = RESULT_OK) {
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (scanningResult != null) {
            String scanContent = scanningResult.getContents();
            hasilscan1.setText(scanContent);
            Intent intent = new Intent(this, InputPerangkat.class);
            intent.putExtra("hasilscan1", hasilscan1.getText().toString());
            startActivity(intent);
        } else {
            Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
            btnInputPerangkat.setVisibility(EditText.INVISIBLE);
        }
    }
}

你可以很容易地做到。使用
startActivityForResult
是为了满足特定的需要,例如,您有一个
活动
第一个活动
。它需要获取一个仅在
SecondActivity
ThirdActivity
上可用的值才能检索此值

然后您必须定义两个请求代码(一个用于启动每个活动)。 例如:


例如,单击按钮

Intent intentGetMessage = new Intent(this, OtherActivity.class);
            startActivityForResult(intentGetMessage, 25);
在其他活动中

            Intent intent = new Intent();
            intent.putExtra("check_list", 1);
            intent.putExtra("shared_contact", stList);
            setResult(25, intent);
            finish();
此代码在隐私活动中正确使用

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            if (requestCode == 25) {
                if (data != null) {
}
}
从数据中获取结果(代表OP发布)

以下是解决方案:

startActivityForResult(scanIntegrator.createScanIntent(), REQUEST_CODE); 

public class MainActivity extends Activity{

TextView hasilscan1, hasilscan2;
Button btnInputPerangkat, btnEditPerangkat;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    hasilscan1 = (TextView) findViewById(R.id.hasilscan1);
    btnInputPerangkat = (Button) findViewById(R.id.btnInputPerangkat);
    btnEditPerangkat = (Button) findViewById(R.id.btnEditPerangkat);

    btnInputPerangkat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            hasilscan1.setVisibility(TextView.INVISIBLE);
            IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
            startActivityForResult(scanIntegrator.createScanIntent(), 10);
        }
    });

    btnEditPerangkat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            hasilscan1.setVisibility(TextView.INVISIBLE);
            IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
            startActivityForResult(scanIntegrator.createScanIntent(), 20);
        }
    });
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode==10) {
        if (resultCode == RESULT_OK) {
            String scanContent = intent.getStringExtra("SCAN_RESULT");
            hasilscan1.setText(scanContent);
            Intent intent1 = new Intent(this, InputPerangkat.class);
            intent1.putExtra("hasilscan1", hasilscan1.getText().toString());
            startActivity(intent1);
            } else if(resultCode==RESULT_CANCELED){
            Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
         }
    }
    if (requestCode==20) {
        if (resultCode == RESULT_OK) {
            String scanContent = intent.getStringExtra("SCAN_RESULT");
            hasilscan1.setText(scanContent);
            Intent intent2 = new Intent(this, EditPerangkat.class);
            intent2.putExtra("hasilscan1", hasilscan1.getText().toString());
            startActivity(intent2);
        } else if(resultCode==RESULT_CANCELED){
            Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
        }
    }
}

still error,来自logcat的通知:error:二进制运算符的操作数类型错误&&&“第一种类型:布尔第二种类型:intstill error,来自logcat的通知:error:二进制运算符的操作数类型错误&&&“第一种类型:布尔第二种类型:Int”你能写更多完整的代码吗,因为它让我很困惑
startActivityForResult(scanIntegrator.createScanIntent(), REQUEST_CODE); 

public class MainActivity extends Activity{

TextView hasilscan1, hasilscan2;
Button btnInputPerangkat, btnEditPerangkat;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    hasilscan1 = (TextView) findViewById(R.id.hasilscan1);
    btnInputPerangkat = (Button) findViewById(R.id.btnInputPerangkat);
    btnEditPerangkat = (Button) findViewById(R.id.btnEditPerangkat);

    btnInputPerangkat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            hasilscan1.setVisibility(TextView.INVISIBLE);
            IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
            startActivityForResult(scanIntegrator.createScanIntent(), 10);
        }
    });

    btnEditPerangkat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            hasilscan1.setVisibility(TextView.INVISIBLE);
            IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
            startActivityForResult(scanIntegrator.createScanIntent(), 20);
        }
    });
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode==10) {
        if (resultCode == RESULT_OK) {
            String scanContent = intent.getStringExtra("SCAN_RESULT");
            hasilscan1.setText(scanContent);
            Intent intent1 = new Intent(this, InputPerangkat.class);
            intent1.putExtra("hasilscan1", hasilscan1.getText().toString());
            startActivity(intent1);
            } else if(resultCode==RESULT_CANCELED){
            Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
         }
    }
    if (requestCode==20) {
        if (resultCode == RESULT_OK) {
            String scanContent = intent.getStringExtra("SCAN_RESULT");
            hasilscan1.setText(scanContent);
            Intent intent2 = new Intent(this, EditPerangkat.class);
            intent2.putExtra("hasilscan1", hasilscan1.getText().toString());
            startActivity(intent2);
        } else if(resultCode==RESULT_CANCELED){
            Toast.makeText(getApplicationContext(), "Not found", Toast.LENGTH_SHORT).show();
        }
    }
}