san*_*one 24 android intellij-idea intentfilter android-intent
我有一个启动活动,开始这样的另一个活动
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
final Thread splashThread = new Thread() {
@Override
public void run() {
try {
int wait = 0;
while (_isActive && (_splashTime > wait)) {
sleep(100);
if (_isActive) {
wait += 100;
}
}
} catch (InterruptedException e) {
Log.d(TAG, e.getMessage());
} finally {
startActivity(new Intent("com.path1.path2.SomeActivity"));
finish();
}
}
};
splashThread.start();
}
Run Code Online (Sandbox Code Playgroud)
要启动另一个活动,我使用string参数作为Intent构造函数.相应的类与这样的splash字符串配对
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.path1.path2"
android:versionCode="2"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4"/>
<!--permissions-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application android:label="@string/app_name" android:icon="@drawable/icon">
<activity android:name=".SplashActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".SomeActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="com.path1.path2.SomeActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".OtherActivity" android:label="@string/app_name"
/>
<!--services-->
<service android:name=".AlarmService"/>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
这完美无缺,直到我重命名包名.我使用重构重命名Manifest中的包名称,IDE会相应地重命名所有其他类.但是当我想开始新重命名的项目时,我遇到了一个错误
Launching application: com.path1.pathOLD/com.path1.path2.SplashActivity.
DEVICE SHELL COMMAND: am start -n "com.path1.pathOLD/com.path1.path2.SplashActivity"
Starting: Intent { cmp=com.path1.pathOLD/com.path1.path2.SplashActivity }
Error type 3
Error: Activity class {com.path1.pathOLD/com.path1.path2.SplashActivity} does not exist.
Run Code Online (Sandbox Code Playgroud)
似乎应用程序尝试使用OLDpath/NEWpath.Splash路径启动Splash活动,并且错误在那里,但我找不到它为什么使用这样的路径.
我使用IntelliJ IDE.有任何想法吗?可能是在Manifest的第二个活动中的过滤器吗?!
san*_*one 31
毕竟错误出现在IntelliJ IDEA中.创建项目时,Configuration会自动检查Launch功能并打印默认类的名称.更改包的名称时,重构不会更改仍指向旧类名的配置字符串.这就是为什么没有编译时错误,而是运行时错误.
如果他们能够在这个令人敬畏的IDE中修复这个问题会很好,因为这些错误很难被追踪(这个错误需要4个月才能实现).

| 归档时间: |
|
| 查看次数: |
26730 次 |
| 最近记录: |