在我的应用程序中,我添加了启动画面并创建了启动 Activity 并对 list 文件进行了适当的更改。但是,当我现在运行我的应用程序时,初始屏幕会显示指定的时间,然后返回 NullPointerException。问题是由
intent.getAction()
在我的 splash 重定向到的类的第 241 行,intent.getAction() 返回 null。据我了解,操作是从指定 Activity 的 list 文件中获取的。这是正确的,不是吗?如果是这样,有人可以看看这个,看看我是否有什么问题吗?我看不出有什么不对。
<activity android:name=".Main"
android:label="@string/app_name">
</activity>
<activity android:name=".SplashActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.GET_CONTENT" />
<data android:mimeType="*/*" />
<category android:name="android.intent.category.OPENABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
_________If 语句正在检索操作______________
Intent intent = getIntent();
System.out.println("Intent action is " + intent.getAction());
if(intent.getAction().equals(Intent.ACTION_GET_CONTENT)) {
bimg[5].setVisibility(View.GONE);
mReturnIntent = true;
} else if (intent.getAction().equals(ACTION_WIDGET)) {
Log.e("MAIN", "Widget action, string = " + intent.getExtras().getString("folder"));
mHandler.updateDirectory(mFileMag.getNextDir(intent.getExtras().getString("folder"), true));
}
}
最佳答案
Action 是从启动 Activity 的 Intent 中获取的。 list Intent 过滤器定义除了直接指定该 Activity 作为目标的 Intent 之外,还将匹配哪些类型的 Intent 。
如果您以这样的方式开始 Activity ,则操作为 null 是完全正常的:
startActivity(new Intent(this, MyTargetActivity.class));
您没有为 Intent 指定操作,因此没有。在测试接收到的 Intent 的操作时,像这样反转检查通常很有用:
if (Intent.ACTION_GET_CONTENT.equals(intent.getAction())) {
// ...
}
避免显式 null 检查的需要,因为常量 Intent.ACTION_GET_CONTENT
不会为 null。
(请注意,即使在这种情况下您的操作检查都不匹配,您的代码仍然必须做一些合理的事情。)
关于android - intent.getAction() 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048883/