如何在单击主活动中的按钮时基于所选微调器选项的文本在另一个活动中设置标题

Bodhisatwa Chakraborty

我着手创建一个包含3个活动的Android应用程序项目。

第一个活动的布局包含3个元素,2个微调器和一个按钮。

我打算使它们以以下方式工作:

MainActivity.java:1.假设我希望第一个微调器在应用程序启动时加载一组类别。例如收入,支出。2.从第一个微调器中选择一个类别后,第二个微调器将在第二个微调器中加载其各自的子类别。例如,如果我在第一个微调器中选择“收入”,则第二个微调器带有佣金,薪金,奖金等费用,并且如果选择“支出”,则在第二个微调器中装入“每月支出”,“运输性”,“账单”等。3.现在,根据我选择的子类别,当我单击按钮时,它将打开一个新活动,并为该特定类别和子类别设置操作栏的标题。例如,如果我选择收入和薪水,则在单击主活动中的按钮后,下一个活动将显示收入,薪水作为标题。

我创建了一个名为Utils.java的类,用于将类别和子类别名称集存储为字符串数组。

public class Utils{

    public static String[] mainCategoryList =
    {
        "Choose One",
        "Income",
        "Expenditure"
    };

    //
    public static String[] chooseOne_list=
    {
        "Choose One"
    };

    public static String[] income_subCategoryList =
    {
        "Bonus",
        "Commision",
        "Salary"                 
    };

    public static String[] expenditure_subCategoryList=
    {
         "Bills",
         "Conveyance",
         "Monthly Expenditure"
    };

    public static String[] income=
    {
        "Income, Bonus",
        "Income, Commission",
        "Income, Salary"
    };

    public static String[] expenditure=
    {
        "Expenditure, Bills",
        "Expenditure, Conveyance",
        "Expenditure, Monthly Expenditure"
    };
}

我为MainActivity.java完成的编码如下所示,

public class MainActivity extends AppCompatActivity {

Spinner spinner1_mainCategory, spinner2_subCategory;
Button buttonChoose;
String spinner1Item, spinner2Item;
Intent intent;


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

    //Spinner element
    spinner1_mainCategory = (Spinner)findViewById(R.id.spinner1_mainCategory);
    spinner2_subCategory = (Spinner)findViewById(R.id.spinner2_subCategory);

    //Button element
    buttonChoose = (Button)findViewById(R.id.buttonChoose);

    //To keep onCreate() clean of multiple adapter setting
    adapterMethod(spinner1_mainCategory,mainCategoryList);

    // Spinner click listener
    spinner1_mainCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
            //String.valueOf(array_name.getSelectedItem()) captures the value of the selected option of a specific string array onClick event
            spinner1Item = String.valueOf(spinner1_mainCategory.getSelectedItem());


            switch (position){
                case 0:
                    adapterMethod(spinner2_subCategory,chooseOne_list);
                    spinner2_subCategory.setVisibility(View.GONE);
                    //Button click listener
                    buttonChoose.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {

                            if (spinner1Item.contentEquals(Utils.mainCategoryList[0])){
                                Toast toast = Toast.makeText(getApplicationContext(), "Choose a Category First", Toast.LENGTH_SHORT);
                                toast.setGravity(Gravity.CENTER|Gravity.CENTER_HORIZONTAL,0,0);
                                toast.show();
                            }
                        }
                    });
                    break;
                case 1:
                    adapterMethod(spinner2_subCategory,income_subCategoryList);
                    spinner2_subCategory.setVisibility(View.VISIBLE);
                    break;
                case 2:
                    adapterMethod(spinner2_subCategory,expenditure_subCategoryList);
                    spinner2_subCategory.setVisibility(View.VISIBLE);
                    break;
            }
        }

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

        }
    });


    spinner2_subCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, final int position, long id) {
            spinner2Item = String.valueOf(spinner2_subCategory.getSelectedItem());

            switch (position){
                case 0:
                    //Income Category, Bonus Sub-category
                    if (spinner2Item.contentEquals(Utils.mainCategoryList[1]) && spinner2Item.contentEquals(income_subCategoryList[0])){
                        buttonChoose.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                changeTitleInNextActivity(Utils.income[0]);
                            }
                        });
                    }
                    //Expenditure Category, Bills Sub-category
                    if (spinner2Item.contentEquals(Utils.mainCategoryList[2]) && spinner2Item.contentEquals(expenditure_subCategoryList[0])){
                        buttonChoose.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                changeTitleInNextActivity(Utils.expenditure[0]);
                            }
                        });
                    }

                    break;
                case 1:
                    //Income Category, Commission Sub-category
                    if (spinner2Item.contentEquals(Utils.mainCategoryList[1]) && spinner2Item.contentEquals(income_subCategoryList[1])){
                        buttonChoose.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                changeTitleInNextActivity(Utils.income[1]);
                            }
                        });
                    }
                    //Expenditure Category, Conveyance Sub-category
                    if (spinner2Item.contentEquals(Utils.mainCategoryList[2]) && spinner2Item.contentEquals(expenditure_subCategoryList[1])){
                    buttonChoose.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            changeTitleInNextActivity(Utils.expenditure[1]);
                        }
                    });
                }

                break;
                case 2:
                    //Income Category, Salary Sub-category
                    if (spinner2Item.contentEquals(Utils.mainCategoryList[1]) && spinner2Item.contentEquals(income_subCategoryList[2])){
                        buttonChoose.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                changeTitleInNextActivity(Utils.income[2]);
                            }
                        });
                    }
                    //Expenditure Category, Monthly Expenditure Sub-category
                    if (spinner2Item.contentEquals(Utils.mainCategoryList[2]) && spinner2Item.contentEquals(expenditure_subCategoryList[2])){
                        buttonChoose.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                changeTitleInNextActivity(Utils.expenditure[2]);
                            }
                        });
                    }
                    break;
            }
        }

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

        }
    });
}

public void adapterMethod(View v, String[] list){
    // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this,
            android.R.layout.simple_spinner_item, list);
    // Drop down layout style - list view with radio button
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    dataAdapter.notifyDataSetChanged();
    // attaching adapter to spinner for district
    if (v.getId()==R.id.spinner1_mainCategory){
        spinner1_mainCategory.setAdapter(dataAdapter);
        spinner1_mainCategory.setSelection(0, false);
    }
    if (v.getId()==R.id.spinner2_subCategory){
        spinner2_subCategory.setAdapter(dataAdapter);
        spinner2_subCategory.setSelection(0, false);
    }
}

public void changeTitleInNextActivity(String title){

    intent = new Intent(getApplicationContext(),SecondActivity.class);
    intent.putExtra("Title", title);
    startActivity(intent);

}

}

SecondActivity.java

public class SecondActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    Intent intent = getIntent();
    String title = intent.getStringExtra("Title");
    getSupportActionBar().setTitle(title);
}

}

我不明白为什么,但是我无法让编码按我想要的方式为我工作。从第一个和第二个微调器中进行选择可以完美地工作,但是无论我尝试了多少种方法,都无法使用它来设置下一个活动中的标题的按钮。

告诉我,伙计们,我做错了什么?如何更好地编写代码以避免这种陷阱。

无法使按钮“选择”:

  1. 去SecondActivity
穆希里

在第二个活动中,获取您传递的字符串

String title=getIntent().getStringExtra("Title");

然后设置你的标题

getSupportActionBar().setTitle(title);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击微调器项目中的项目时如何启动另一个活动

来自分类Dev

如何在另一个活动中访问在主活动中声明的变量

来自分类Dev

单击另一个活动中的按钮时,调用检查Internet连接类

来自分类Dev

如何在Android中创建多个微调器并将该微调器数据传递给另一个活动(相同)

来自分类Dev

当我们在SrollView的TextView中单击单个文本时,如何打开另一个活动

来自分类Dev

单击触发输入聚焦的另一个选项卡中的按钮时,动态更改选项卡活动

来自分类Dev

单击按钮如何调用另一个活动?

来自分类Dev

如何在另一个活动中显示单击的列表视图项

来自分类Dev

如何从另一个活动中设置textview的文本

来自分类Dev

如何在另一个活动中从uri设置导航抽屉查看器的图像

来自分类Dev

从活动访问string_array并将所选项目发送到android中的另一个活动

来自分类Dev

如何在Android中更改另一个活动的文本视图和图像视图

来自分类Dev

当我单击另一个活动中的图像按钮时,获取 recyclerview 项目的位置

来自分类Dev

如何在单击按钮时从微调器中获取下一个/上一个项目?

来自分类Dev

如何从另一个活动访问设置活动中的复选框值?

来自分类Dev

单击上载按钮后,在另一个活动中显示图像

来自分类Dev

单击按钮时出错,无法转到从微调器中选择的下一个活动

来自分类Dev

如何在按钮上设置密码以打开另一个活动?

来自分类Dev

如何从另一个活动中启动启动器活动?

来自分类Dev

如何从微调器获取当前值并将其传递给另一个活动的文本视图?

来自分类Dev

如何通过另一个活动按钮单击事件在viewpager中打开特定片段页面

来自分类Dev

如何使用editText作为URL和单击按钮,在另一个活动中打开Web视图

来自分类Dev

单击 ListView 中的项目时,在另一个活动中显示列表

来自分类Dev

Android活动-如何在android中打开另一个活动?

来自分类Dev

按下另一个活动中的按钮时更改按钮颜色

来自分类Dev

如何在Android中的另一个活动中访问一个活动中的组件(例如时间选择器)?

来自分类Dev

从android中的另一个活动设置textview

来自分类Dev

单击时如何更改变量并将其传递给android中的另一个活动(有代码)?

来自分类Dev

我如何在另一个活动中执行一个类

Related 相关文章

  1. 1

    单击微调器项目中的项目时如何启动另一个活动

  2. 2

    如何在另一个活动中访问在主活动中声明的变量

  3. 3

    单击另一个活动中的按钮时,调用检查Internet连接类

  4. 4

    如何在Android中创建多个微调器并将该微调器数据传递给另一个活动(相同)

  5. 5

    当我们在SrollView的TextView中单击单个文本时,如何打开另一个活动

  6. 6

    单击触发输入聚焦的另一个选项卡中的按钮时,动态更改选项卡活动

  7. 7

    单击按钮如何调用另一个活动?

  8. 8

    如何在另一个活动中显示单击的列表视图项

  9. 9

    如何从另一个活动中设置textview的文本

  10. 10

    如何在另一个活动中从uri设置导航抽屉查看器的图像

  11. 11

    从活动访问string_array并将所选项目发送到android中的另一个活动

  12. 12

    如何在Android中更改另一个活动的文本视图和图像视图

  13. 13

    当我单击另一个活动中的图像按钮时,获取 recyclerview 项目的位置

  14. 14

    如何在单击按钮时从微调器中获取下一个/上一个项目?

  15. 15

    如何从另一个活动访问设置活动中的复选框值?

  16. 16

    单击上载按钮后,在另一个活动中显示图像

  17. 17

    单击按钮时出错,无法转到从微调器中选择的下一个活动

  18. 18

    如何在按钮上设置密码以打开另一个活动?

  19. 19

    如何从另一个活动中启动启动器活动?

  20. 20

    如何从微调器获取当前值并将其传递给另一个活动的文本视图?

  21. 21

    如何通过另一个活动按钮单击事件在viewpager中打开特定片段页面

  22. 22

    如何使用editText作为URL和单击按钮,在另一个活动中打开Web视图

  23. 23

    单击 ListView 中的项目时,在另一个活动中显示列表

  24. 24

    Android活动-如何在android中打开另一个活动?

  25. 25

    按下另一个活动中的按钮时更改按钮颜色

  26. 26

    如何在Android中的另一个活动中访问一个活动中的组件(例如时间选择器)?

  27. 27

    从android中的另一个活动设置textview

  28. 28

    单击时如何更改变量并将其传递给android中的另一个活动(有代码)?

  29. 29

    我如何在另一个活动中执行一个类

热门标签

归档