Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 如何调用intent,我的活动名称存储在字符串值中_Android_Android Intent - Fatal编程技术网

Android 如何调用intent,我的活动名称存储在字符串值中

Android 如何调用intent,我的活动名称存储在字符串值中,android,android-intent,Android,Android Intent,我是字符串形式的存储类名,我想使用intent调用存储类名。此代码对我有效,但我不希望出现多个if-else条件。如何解决这个问题。 先谢谢你 expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int gro

我是字符串形式的存储类名,我想使用intent调用存储类名。此代码对我有效,但我不希望出现多个if-else条件。如何解决这个问题。 先谢谢你

expListView.setOnChildClickListener(new OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition, int childPosition, long id) {
            ActivityName = "";

            // for CSP Enrollment
            if (groupPosition == 0 && childPosition == 0) {

                ActivityName="CSP";
                SelectedIntentCreateFormClass();
            }

            // for Farmer Enrollment
            else if (groupPosition == 0 && childPosition == 1) {

                ActivityName="Farmar";
                SelectedIntentCreateFormClass();
            }

            // for Balance Inquiry
            else if (groupPosition == 1 && childPosition == 0) 
            {
                ActivityName="BalanceEnquiry";
                SelectedIntentClass();
            }

            // for Cash Withdrawal
            else if (groupPosition == 1 && childPosition == 1) 
            {
                ActivityName="CashWithdrawal";
                SelectedIntentClass();
            }

            // for cash deposit
            else if (groupPosition == 1 && childPosition == 2) 
            {
                ActivityName="CashDeposit";
                SelectedIntentClass();
            }

            // for mini statement
            else if (groupPosition == 1 && childPosition == 3) 
            {
                ActivityName="Ministatement";
                SelectedIntentClass();
            }

            // for Cash Summary
            else if (groupPosition == 2 && childPosition == 0) {

            }

            // for purchase register
            else if (groupPosition == 2 && childPosition == 1) {

            }

            // for Transaction List
            else if (groupPosition == 2 && childPosition == 2) {

            }

            // for Card Reader
            else if (groupPosition == 3 && childPosition == 0) {
            }

            else if (groupPosition == 3 && childPosition == 1) {

            }

            // TODO Auto-generated method stub
            Toast.makeText(
                    getApplicationContext(),
                    listDataHeader.get(groupPosition)
                            + groupPosition
                            + childPosition
                            + " : "
                            + listDataChild.get(
                                    listDataHeader.get(groupPosition)).get(
                                    childPosition), Toast.LENGTH_SHORT)
                    .show();
            return false;
        }
    });
这是我的if-else代码。。。我不想这样

if (ActivityName.equalsIgnoreCase("BalanceEnquiry")) {

        ActivityIntent = new Intent(getBaseContext(), BalanceEnquiry.class);
    }
    else if (ActivityName.equalsIgnoreCase("CashWithdrawal")) {

        ActivityIntent = new Intent(getBaseContext(), CashWithdrawal.class);
    }
    else if(ActivityName.equalsIgnoreCase("CashDeposit"))
    {

        ActivityIntent = new Intent(getBaseContext(), CashDeposit.class);
    }
    else if(ActivityName.equalsIgnoreCase("Ministatement"))
    {

        ActivityIntent = new Intent(getBaseContext(), Ministatement.class);
    }
    else if(ActivityName.equalsIgnoreCase("CSP"))
    {

        ActivityIntent = new Intent(getBaseContext(), CSP.class);
    }
    else if(ActivityName.equalsIgnoreCase("Farmar"))
    {

        ActivityIntent = new Intent(getBaseContext(), Farmar.class);
    }

这是如此简单的人,使用HashMap

HashMap<String, Class<?>> mMap = new HashMap<String,Class<?>>();
mMap.put(FirstActivity.class.getName(), FirstActivity.class);
mMap.put(SecondActivity.class.getName(), SecondFirstActivity.class);
mMap.put(ThirdActivity.class.getName(), ThirdActivity.class);

你可以使用反射

 try {
            Class<?> cls =  Class.forName("your.package.name.BalanceEnquiry");
            startActivity(new Intent(this, cls));
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
试试看{
Class cls=Class.forName(“your.package.name.balanceinquiry”);
startActivity(新意图(本,cls));
}catch(classnotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}

不要使用if或case,只使用
Class.forName(yourPkg+className)
。如果出现任何异常,请捕获并抛出RuntimeException,因为如果出现任何错误,则无法停止该错误,因为您缺少一个类。class.forName(“className”),但您需要一个全名。
 try {
            Class<?> cls =  Class.forName("your.package.name.BalanceEnquiry");
            startActivity(new Intent(this, cls));
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }