android把变量设置为要跳转的Activity

如题:android把变量设置为要跳转的ActivitypublicStringmact="MainActivity";Intentintent=newIntent(th... 如题:
android把变量设置为要跳转的Activity

public String mact = "MainActivity";

Intent intent = new Intent(this, mact.class); //把MainActivity 以变量形式放到这里
startActivity(intent);

这样貌似不行,有高手知道怎么可以实现此功能吗?万分感激。。。
展开
 我来答
千锋教育
2015-12-05 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

使用java的反射机制可以达到所要的效果

代码如下

String activityName = "NextActivity";
Class clazz = Class.forName(activityName);
Intent intent = new Intent(this,clazz);
startActivity(intent);

要注意的是activityName必须是完整的类路径,包括包名,如果NextActivity和当前activity不在同一个包,比如在com.test包下,就是com.test.NextActivty


也可以使用隐式启动达到效果,

在清单文件中设置需要启动的activty的action属性


然后在代码中,通过隐式启动activity

String action = "com.test.activity.next";
Intent intent = new Intent(action);
startActivity(intent);

需要注意的是android5.0之后隐式启动是禁止的

你需要加上这句代码

intent.setPackage(getPackageName());

百度网友30bb719
推荐于2017-11-25 · TA获得超过348个赞
知道小有建树答主
回答量:310
采纳率:75%
帮助的人:210万
展开全部

这样需要用到java的反射机制 ,

Class  class=Class.forname(mact);  //加上异常处理try  catch
Intent intent=new Intent(this,class);
startActivity(intent);

这样就行了。   mact变量需要加上你的包名,绝对路径,不然会报找不到类的错误。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式