【问题标题】:Call function result from different activity on android studioandroid studio上不同活动的调用函数结果
【发布时间】:2020-09-26 11:08:41
【问题描述】:

我在网上找到了一个用于为 Android 创建 QR 码扫描仪应用程序的教程。它工作得很好,但扫描的输出是一个 toast 通知,正如您在代码中看到的那样:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (resultCode == Activity.RESULT_OK) {
        val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
        if (result != null) {
            if (result.contents == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show()
            } else {
                Toast.makeText(this, "Scanned: " + result.contents, Toast.LENGTH_LONG).show()
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }
  }
 }

我想做的是让扫描的代码在应用程序本身内启动 url。由于我希望将页面托管在应用程序本身中,因此我所做的是使用加载内部 html 页面的 webview 创建一个活动。

我获取了扫描仪代码并更改了正面结果以打开 webview 活动: startActivity(Intent(this, PagInfoActivity::class.java))

效果很好。每当检测到二维码时,应用程序都会自动加载所需的活动。我知道这并不理想,因为 QR 码链接本身并未用于打开页面,但我试图做的是在 webview 加载时使用该扫描结果。我用文本字符串而不是 URL 创建了 QRCode,这样我就可以将它们注入到 webview 的 loadURL 中,如下所示:

WebView.loadUrl("file:///android_asset/*QRCODE string*.html");

是否可以从 MainActivity 调用result.contents

【问题讨论】:

    标签: java android android-activity


    【解决方案1】:

    您可以通过多种方式实现这一目标。第一个选项可以是Explicit Intents 例如, 您需要将其作为额外的传递:

    Intent i = new Intent(this, PagInfoActivity.class);
    i.putExtra("result", result.contents);
    startActivity(i);
    

    然后像这样从你的 PagInfoActivity 中提取它:

    Intent intent = getIntent();
    String result= intent.getExtras().getString("result");
    

    【讨论】:

    • 我的荣幸,快乐的编码:-)
    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多