从微调器中瞄准用户选择并在下一个活动中使用它 - Android

时间:2017-11-08 09:22:54

标签: java android sqlite sharedpreferences android-spinner

目前我在使用我的应用程序中定位和使用用户从微调器(下拉菜单)中选择的内容的最佳方法时遇到了一些困境。

为了给你一些见解,请说我有两个活动,一个叫做创建行,用户从微调器中选择他们的选项,另一个叫做行详细信息,我希望能够处理用户选择的内容

我目前成功将用户下拉选项保存到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());

LINEDETAILS: 然后我在下一个活动上引用该字符串并将其设置为我将在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);

我不太确定哪种方法最好用,也不确定如何做每一种方法......任何帮助都会很棒!

由于

1 个答案:

答案 0 :(得分:1)

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

    public Form1()
    {
        // Initialisations left out
        dg.AutoGenerateColumns = false;
        dg.AllowUserToAddRows = true;
        dg.Columns["ID"].DataPropertyName = "ID";
        dg.Columns["Customer"].DataPropertyName = "Customer";

        bs.DataSource = typeof(List<Record>);
        bs.AllowNew = true;
        dg.DataSource = bs;

        displayNewBlock(0);
    }

    private void numUpDown_ValueChanged(object sender, EventArgs e)
    {
        displayNewBlock((int)numUpDown.Value);
    }

    private void displayNewBlock(int blockIndex)
    {
        bs.Clear();
        foreach (Record row in blockList[(int)numUpDown.Value])
            bs.Add(row);
    } 

在第二个活动中,创建两个字符串来存储这些值。要在create中导入这些值,请写下:

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

之后你可以申请if else来检查哪个条件满足并相应地进行操作。