Android 如何调用intent,我的活动名称存储在字符串值中
我是字符串形式的存储类名,我想使用intent调用存储类名。此代码对我有效,但我不希望出现多个if-else条件。如何解决这个问题。 先谢谢你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
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();
}