我有一个Android项目。现在我需要创建该项目的第二版。
会有什么不同:
项目的新版本应在其中一个活动中具有不同的内容。
我正在考虑创建一个库项目和两个将使用库项目的新项目(project1
和project2
),但我真的不明白如何设置它。
我是否应该将原始项目转换为库,然后创建两个新项目,然后?如何project1
使用activity1
和project2
在同一个地方使用activity2
?
修改
到目前为止我设置的内容:
MainProject,一个库有MainActivity.java和ChildActivity.java
的AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mainproject">
<application>
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ChildActivity">
</activity>
</application>
</manifest>
MainActivity.java
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ChildActivity.class);
startActivity(intent);
}
});
}
}
StandAloneProject:它只有ChildActivity.java
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.standaloneproject">
<application>
<activity
android:name="com.example.mainproject.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ChildActivity" >
</activity>
</application>
</manifest>
我的期望:
当我启动StandAloneProject并单击按钮时,我希望启动来自StandAloneProject的ChildActivity(而不是来自MainProject)。
我得到了什么:
当我启动StandAloneProject时,我会看到MainProject的MainActivity,点击按钮并获取:
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.standaloneproject/com.example.mainproject.ChildActivity}; have you declared this activity in your AndroidManifest.xml?
答案 0 :(得分:5)
问题是如何在MainActivity.java中启动子活动。 您需要“手动”确保启动正确的ChildActivity。
执行此操作的一种方法是显式设置intent的组件。 Context.getPackageName()函数返回您正在运行的应用程序的包名称,您可以使用它来标识要启动的ChildActivity的“正确实例”。在MainActivity.java中的 onClick()处理程序中尝试此操作:
Intent intent = new Intent();
intent.setComponent(new ComponentName(getPackageName(), getPackageName() + ".ChildActivity"));
startActivity(intent);
答案 1 :(得分:3)
你的方法是正确的。
答案 2 :(得分:1)
你走在正确的轨道上。设置一个库项目和两个包含lib项目的标准android项目。 请记住将清单活动复制到新项目中。如果要分隔活动,可以扩展lib项目中的活动。 project1:MyActivty扩展了Activit1 ..项目2 MyActivit