android - 下面给出的android中这行代码的含义......?
问题描述
startActivity(new Intent(this, Class.forName(getPackageManager().getApplicationInfo(getPackageName(), 128).metaData.getString("com.sadaf.javafiles.MAIN_ACTIVITY_CLASS_NAME"))));
解决方案
此代码用于创建另一个活动并将其添加到顶级 UI 级别
startActivity()
可以从任何上下文/活动中调用,主要用于
finish()
startActivity(new Intent(this, NewActivity.class));
这用于关闭当前活动并开始下一个活动
更详细的解释请参考:
https ://developer.android.com/training/basics/firstapp/starting-activity#BuildIntent
startActivity(new Intent(this, Class.forName(getPackageManager().getApplicationInfo(getPackageName(), 128).metaData.getString("com.sadaf.javafiles.MAIN_ACTIVITY_CLASS_NAME"))));
意图需要一个上下文和一个类作为参数,上下文是“this”(当前正在显示的活动的当前上下文)
该类来自 Class.forName(String) ,它需要一个 String 值才能从活动中获取类名
它通过调用获取该字符串值:
getPackageManager().getApplicationInfo(getPackageName(), 128).metaData.getString(stringKey)
stringKey
是来自项目AndroidManifest.xml
文件 android:name:
<activity android:name="com.sadaf.javafiles.MAIN_ACTIVITY_CLASS_NAME" >
</activity>
所以本质上,这段代码所做的是以编程方式获取声明的“主要活动”的.class,而不是使用“标准”方式去 MainActivity.class
推荐阅读
- angular - Angular:向标签添加点击方法 - 字符串中的属性绑定
- python - 我在客户端和服务器上有证书和私钥,但 gRPC 安全连接失败
- selenium - Selenium webdriver 找不到 xpath
- sockets - 如何从网络服务器检查套接字?
- c - 编译器询问我在主文件中的标题
- bash - 扩展 docker 镜像,保留其入口点
- node.js - 为了将 Heroku Node.js 与 Hostinger 前端链接起来,我应该做些什么改变?
- php - PHP 在字符串中查找函数
- r - 如何根据使用 R 对数据框中前两列的评估有条件地用 NA 填充行?
- tensorflow - 张量流中堆叠LSTM双向中的输出顺序