【发布时间】:2020-10-07 05:57:27
【问题描述】:
我有一个包含两个 android 项目的 xamarin 解决方案。我想在 project2 中的 project1 中运行 android 活动。我看过与这个主题相关的线程(比如How to call an activity in another project? Call activity from another project) 并尝试了许多建议的解决方案,但最后我总是得到“Android.Content.ActivityNotFoundException: 'Unable to find explicit activity class {companyname.project2/companyname.project2.Droid.View.LoginView};您是否在 AndroidManifest.xml 中声明了此活动?'”错误。如果可以,这在 xamarin 中是否可行?难道我做错了什么?这是我的源代码:
项目1:
namespace BigAppManager {
[Activity (MainLauncher = true, Name = "com.companyname.bigappmanager.MainActivity", Label = " Logowanie", ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize, NoHistory = true, LaunchMode = LaunchMode.SingleInstance)]
public class MainActivity : MvxActivity<MainActivityViewModel> {
protected override void OnCreate (Bundle savedInstanceState) {
base.OnCreate (savedInstanceState);
Xamarin.Essentials.Platform.Init (this, savedInstanceState);
SetContentView (Resource.Layout.activity_main);
Button button = FindViewById<Button> (Resource.Id.button);
button.Click += ClickButton;
}
private void ClickButton (object sender, EventArgs e) {
//Intent intent = new Intent("companyname.project2.Droid.View.LoginView");
//StartActivity(intent);
Intent intent = new Intent (Intent.ActionMain);
intent.AddCategory (Intent.CategoryLauncher);
// intent.SetClassName("companyname.project2", "companyname.project2.Droid.View.LoginView");
intent.SetComponent (new ComponentName ("companyname.project2", "companyname.project2.Droid.View.LoginView"));
StartActivity (intent);
}
public override void OnRequestPermissionsResult (int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) {
Xamarin.Essentials.Platform.OnRequestPermissionsResult (requestCode, permissions, grantResults);
base.OnRequestPermissionsResult (requestCode, permissions, grantResults);
}
}
}
项目2:
[Activity(Name = "companyname.project2.Droid.View.LoginView", Label = " Logowanie", ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize, NoHistory = true, LaunchMode = LaunchMode.SingleInstance)]
public class LoginView : MvxActivity<LoginViewModel>
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.LoginView);
}
}
项目 2 android manifest intent 过滤器:
<activity android:name="companyname.project2.Droid.View.LoginView">
<intent-filter>
<action android:name="companyname.project2.View.LoginView"></action>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
【问题讨论】:
标签: c# android visual-studio xamarin