标题可能无法明确说明我要寻找的内容,因此在这里我将尝试对其进行解释。
我们可以创建一个意图来在Android中启动另一个活动:
var firstName = prompt("What's your first name?");
var lastName = prompt("Ooo I like that. So, what's your last name?");
var answer = prompt(firstName + " " + lastName + ", huh? Wow, I love that name! I'm a little bored right now...so, would you like to play a Choose Your Own Adventure Game?");
if (answer === "yes" || "Yes") {
alert("Woohoo! I haven't played this in a long time. Okay, here goes. Press the OK button to start.");
}
else {
alert("Oh, okay. Well, I'll see you later.");
}
我想要完成的是:
Intent intent = new Intent(this, TargetedActivity.class);
但这无法正常工作,Android Studio给了我这个错误: “无法解析构造函数('android.content.Context,java.lang.String')”
因此,它不接受第二个参数作为字符串。如果有人能为我解释这是为什么发生以及如何解决的话,我将不胜感激。
答案 0 :(得分:2)
您应该首先避免将其作为String
传递。但是,如果它超出了您的控制范围或您的设计要求(没有充分的理由这样做),则可以如下使用Class.forName()
String activityName = "<packagename>.trackingActivity";
try {
Intent intent = new Intent(this, Class.forName(activityName));
startActivity(intent);
} catch (ClassNotFoundException e) {
//take necessary action
}
更好的选择如下:
如下:
public void startActivity(final Intent intent) {
//intent.putExtra(..)
...
startActivity(intent);
}
Class
如下:
public void startActivity(Class activityClass) {
Intent intent = new Intent(this, activityClass);
...
startActivity(intent);
}
答案 1 :(得分:1)
使用Polymorphism
的{{1}}概念。假设您有5个OOP
。
Activity
,Activity1
,Activity2
,Activity3
,Activity4
。
使用此方法
Activity5
然后像这样开始private Intent getActivityIntent(Class<? extends Activity> mStartActivityClass){
Intent intent = new Intent(this, mStartActivityClass);
return intent;
}
:
Activity
您不必重复代码。一种方法可以处理所有Intent intent1 = getActivityIntent(Activity1.class);
startActivity(intent1);
Intent intent2 = getActivityIntent(Activity2.class);
startActivity(intent2);
Intent intent3 = getActivityIntent(Activity3.class);
startActivity(intent3);
.............
类