我有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

输出截图
c# - 从其他应用程序的入口点android启动应用程序-LMLPHP

应用日志

Log

更新的屏幕截图:

c# - 从其他应用程序的入口点android启动应用程序-LMLPHP

最佳答案

我认为CommonApp Activity实际上已启动(如调试器所示),但未使用正确的布局文件。两种MainActivity(来自CommonApp的一个和来自Client1的一个)都使用名为activity_main的布局。因此,两个项目都包含一个activity_main.xml文件,并且似乎一个(来自Client1项目)覆盖了另一个。

没有资源的 namespace ,您需要重命名布局(以及要保持独特的任何其他资源)以避免冲突。您可以添加前缀,例如common_activity_mainclient_activity_main
编辑(评论中的其他信息):

包含公共(public)部分的项目应该是Android类库,而不是Android App。否则,它似乎可以正常工作(无构建错误),但APK中不存在布局文件。

关于c# - 从其他应用程序的入口点android启动应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51096346/

10-09 06:51