首页 > 解决方案 > 下面给出的android中这行代码的含义......?

问题描述

startActivity(new Intent(this, Class.forName(getPackageManager().getApplicationInfo(getPackageName(), 128).metaData.getString("com.sadaf.javafiles.MAIN_ACTIVITY_CLASS_NAME"))));

标签: androidandroid-activity

解决方案


此代码用于创建另一个活动并将其添加到顶级 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


推荐阅读