2014-11-21 3 views
0

Я являюсь именем класса магазина в строке, и я хочу вызвать имя класса магазина, используя намерение. этот код работает для меня, но я не хочу, чтобы было выполнено несколько условий 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 (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); 
    } 
+0

Class.forName ("Classname"), вам нужно полное имя, хотя. – IuriiO

ответ

0

вы можете использовать отражение

try { 
      Class<?> cls = Class.forName("your.package.name.BalanceEnquiry"); 
      startActivity(new Intent(this, cls)); 
     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
0

Это настолько простой человек, использование 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); 

и вы можете получить в любом месте от ключа, где вы хотите вызвать намерение просто ввести имя ключа, которое должно быть, вероятно, ваше имя класса;

Class mClass = mMap.get(FirstActivity.class.getName()); 
intent = new Intent(YourActivity.this,mClass); 
+2

не использовать if или case, используйте только 'Class.forName (yourPkg + className)'. уловить, если есть исключения, и выбросить исключение RuntimeException, потому что ошибка не может быть остановлена ​​для вас, если отсутствует какая-либо ошибка. – eduyayo

+0

Class.forName (yourPkg + className) для меня не работает, он всегда идет, чтобы поймать .. –

Смежные вопросы