我有xamarin.android项目Client1和1 CommonApp项目(在同一解决方案内),它们具有所有通用代码。从Client1项目中,我需要启动CommonApp,我的代码要在Client1应用中启动
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
FindViewById<Button>(Resource.Id.btn1).Click += delegate {
//Starting CommonApp project
StartActivity(new Intent(Application.Context, typeof(CommonApp.MainActivity)));
};
}
}
低于1的是CommonApp MainActivity,其中调试器指向,但未启动新 Activity ,但是当我按下物理后退按钮时,该 Activity 又被添加到了堆栈中。
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//This is CommonApp
SetContentView(Resource.Layout.activity_main);
}
CommonApp activity_main有
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="This is CommonApp">
</TextView>
说明:我有2个Android应用解决方案。 1个CommonApp和第二个客户端1。 Cleint1是具有CommonApp类型的.dll的启动项目。从Cleint1应用程序中,我通过导入CommonApp namespace 来启动CommonApp。我可以有许多项目Client1,Client2,Client3 ... etc,它们带有自己的图标,应用程序名称,启动屏幕和google-service.json。当我在启动时设置Client2时,它将成为Client2项目和CommonApp中所有可用的通用代码。
要求:Here
输出截图
应用日志
Log
更新的屏幕截图:
最佳答案
我认为CommonApp Activity实际上已启动(如调试器所示),但未使用正确的布局文件。两种MainActivity
(来自CommonApp的一个和来自Client1的一个)都使用名为activity_main
的布局。因此,两个项目都包含一个activity_main.xml
文件,并且似乎一个(来自Client1项目)覆盖了另一个。
没有资源的 namespace ,您需要重命名布局(以及要保持独特的任何其他资源)以避免冲突。您可以添加前缀,例如common_activity_main
和client_activity_main
编辑(评论中的其他信息):
包含公共(public)部分的项目应该是Android类库,而不是Android App。否则,它似乎可以正常工作(无构建错误),但APK中不存在布局文件。
关于c# - 从其他应用程序的入口点android启动应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51096346/