我有一个包含所有功能和一些活动的库项目,我还有一个包装器活动,它只有一个JSON配置字符串和一些样式。我将库导入到包装器项目中,并且在包装器项目中我将库的一个活动设置为启动活动,但是然后得到一个错误,即库中选定的活动不是活动子类或别名
这是什么意思,我可以纠正这个吗?
应该启动的活动:
package dk.borgertip.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import dk.borgertip.R;
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Thread startTimer = new Thread() {
@Override
public void run() {
try {
sleep(3000);
Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
startTimer.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_splash, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
项目结构:(Borgertip模块是包含要启动的活动的库,扩展了活动)
“编辑配置”对话框,显示错误:
我做错了什么?
答案 0 :(得分:5)
我有同样的问题,在这种特殊情况下,它是在重构一些代码并删除设置为应用程序主要活动的活动后引起的。
我确保<activity></activity>
声明也已从manifest.xml
文件中移除,但它仍被设置为Android Studio中Run/Debug configurations
部分的主要活动。
转到run/Edit configurations.../Android App/app
选择"General"
标签,然后查看"Launch Options"
部分。在那里,您可以选择要设置为主要活动的活动。
希望这对其他人有用。
答案 1 :(得分:1)
您必须在项目AndroidManifest.xml中包含activity
来源官方doc:
In the manifest file of the application project, you must add declarations
of all components that the application will use that are imported from a
library project. For example, you must declare any <activity>, <service>,
<receiver>, <provider>, and so on, as well as <permission>,
<uses-library>, and similar elements.
答案 2 :(得分:0)
转到工具---&gt;编辑配置,然后再次选择活动类文件。
这将解决此问题。
答案 3 :(得分:0)
详细信息
正如@Gabriele所指出的,必须在Activity
中指定要启动的AndroidManifest.xml
,并且正如@Sandova指出的那样,必须在Configurations
部分中指定。
清单应该看起来像这样:
<manifest ... package="com.
任何 .
项目名称 " >
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application android:label="whatever1" android:theme="whatever2"
<activity android:label="whatever3"
android:name="com.
任何 .
项目名称 .
您的活动名称 " >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
要在Configuration
部分中指定活动的名称,请转到Run > Edit Configurations
并展开Android App
以找到app
。
请注意Launch Options
部分,然后从Specified Activity
菜单中选择Launch
,然后将显示必须在其中指定活动名称的文本框。
如OP的Edit Configuration dialog
所建议,要启动的Activity
必须完全合格 –即,SplashActivity
还不够。 (如果需要,请单击文本框最右侧的...
。)
答案 4 :(得分:0)
我以前有同样的问题。也许为时已晚,但有一种罕见的情况会触发此问题。如果您在启动选项中选择要与之一起运行的特定活动,并且您删除或重命名了该活动。因此,只需检查您的应用启动选项即可。也许它可以帮助某人!