【问题标题】:Targetting user selection from a spinner and using it in next activity - Android从微调器中定位用户选择并在下一个活动中使用它 - Android
【发布时间】:2023-03-06 05:20:01
【问题描述】:

目前,关于定位和使用用户从我的应用程序中的微调器(下拉菜单)中选择的内容的最佳方式,我有点进退两难。

为了给您一些见解,假设我有两个活动,一个称为创建行,用户从微调器中选择他们的选项,下一个称为行详细信息,我希望能够使用用户选择的内容.

我目前已成功将用户下拉选择保存到 SQLite 数据库。

在我的微调器中,用户可以选择 20 或 30 的选项。在第二个活动的详细信息行中,我希望能够编写一个 IF 语句来告诉我的app 做某事,具体取决于他们是否选择了 20 个还是 30 个?

获取用户选择并准备 IF 语句的最佳方法是什么?

  • 我应该使用 db.query 来获取用户选择的内容并在 IF 语句中使用它吗?

    • 我应该将选择存储在Sharedpreference 中并以这种方式定位吗?

这里是微调器代码:

spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {


            switch (position) {
                case 0:
                    quantity.setText("");
                    ;
                    break;
                case 1:
                    quantity.setText(PackageType20);
                    timeadded = 28;
                    duration.setText(timeadded + " Hours");


                    break;
                case 2:
                    quantity.setText(PackageType30);
                    timeadded = 27;
                    duration.setText(timeadded + " Hours");

                    break;
                default:
                    break;
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

使用尝试的方法进行编辑:

创建行: 在创建行上,我将用户选择存储在公共静态变量中:

public static spinnerSelection2 = String.valueOf(spinner2.getSelectedItem());

LINE详情: 然后我在下一个活动中引用该字符串并将其设置为我将在 IF 语句中使用的变量:

 String spinnerSelection2 = CreateLine.spinnerSelection2;

    if (spinnerSelection2.equals("20")) {
        optimum20 = (int) (diffminutes * 0.383);
        percentage20 = optimum20 / (648 * 100);
    } else if (spinnerSelection2.equals("30"))
            optimum30 = (int) (diffminutes * 0.373);
            percentage30 = optimum30 / (605 * 100);

我不太确定哪种方法最适合使用,也不确定如何使用每种方法。任何帮助都会很棒!

谢谢

【问题讨论】:

    标签: java android sqlite sharedpreferences android-spinner


    【解决方案1】:

    要在您的切换案例中执行此操作,请添加以下行以进入新活动:

    Intent intent = new Intent(getContext(),yourSecondActivity.class);
    intent.putExtra("duration",duration);
    intent.putExtra("PackageType", packageType);
    

    在您的第二个活动中,创建两个字符串来存储这些值。并在创建时将这些值导入其中:

    yourVariable = intent.getStringExtra("duration");
    yourSecondVariable = intent.getStringExtra("packageType");
    

    之后,您可以应用 if else 来检查满足哪个条件并在那里进行相应的操作。

    【讨论】:

    • 希望你能得到这个并让你的代码工作。如果它适合你,请随时告诉我或进一步帮助给我发短信。如果它对您有用,请不要忘记将这篇文章标记为答案。祝你好运:)
    • 在看到您的答案之前,我尝试了不同的方法。我会更新我上面使用的代码,让我知道你的想法,或者如果这不起作用?
    • 我从未使用过您提供的上述方式。如果它运作良好,那么你可能会坚持下去。但我告诉你的方式是从微调器中获取价值,然后通过意图将其传递给另一个活动,如 android 开发者论坛中所述。
    • 如果您想直接跳转到第二个活动,请在 switch 语句案例中使用此代码,但如果您需要在选择时更新您的 ui,那么稍后当您想切换到第二个活动时使用 Intent 方法(如在按钮上)点击等。
    • @TheAlmac2 在活动类中使用static 变量不是一个好主意。你最好使用@M.SaadLakhan 建议的默认交互通信方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多