我的应用程序无法打开正确的活动-为什么?

时间:2019-04-26 12:15:26

标签: android

下午好

我正在开发一个Android App,但遇到了一些麻烦。 我有许多应该打开活动的应用程序按钮。我不想有很多不同的onClick()方法,所以我试图使一个泛型可以根据单击哪个按钮来检索正确的活动以打开。

我想出了可以正常运行的代码:

public void displayActivity(View view) {

    switch(view.getId()) {
        case R.id.secondActitityButton:
            myClass = SecondActivity.class;
            break;
        default:
            throw new RuntimeException("Unknown Button");
    }

    Intent myIntent = new Intent (this, myClass);
    startActivity (myIntent);
}

但这仍然意味着我需要有很多开关盒(每个按钮一个...)。所以我尝试了另一个使用按钮的“内容描述”来存储类名称的方法。这是代码:

public void displayActivity(View view) {
    Class myClass;
    String className = (view.getContentDescription().toString().trim());
    try {
        myClass = Class.forName(className);
    }
    catch (ClassNotFoundException e) {
        myClass = MainActivity.class;
    }

    Intent myIntent = new Intent (this, myClass);
    startActivity (myIntent);
}

按钮的内容描述已定义为“ SecondActivity.class ”。

但是现在当我单击按钮时,它一直将我发送到MainActivity。

我进行了研究,但找不到该问题的答案...

有人可以帮忙吗? 预先感谢

1 个答案:

答案 0 :(得分:0)

Class#forName()期望所要类的完全限定名称。因此,类名应类似于the.complete.packagename.YourActivity

请注意,这不是内容描述的预期用法,请参见Make apps more accessible。您应该考虑另一种方法。