【问题标题】:Starting activity from Fragment doesn't work Xamarin从 Fragment 开始活动不起作用 Xamarin
【发布时间】:2016-11-30 21:21:07
【问题描述】:

我正在尝试使用 Xamarin.Android 从片段开始活动。这是片段

public class ChoirFragment : TourFragment
{
    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your fragment here
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var view = inflater.Inflate(page, container, false);
        Button button = view.FindViewById<Button>(Resource.Id.Button);
        button.Click += delegate
        {
            var intent = new Intent(Activity, typeof(StartActivity));
            StartActivity(intent);
        };
        return base.OnCreateView(inflater, container, savedInstanceState);
    }
}

当我点击按钮时,点击什么都不做:(。

而且我不知道为什么调试器不会在 OnCreateView 处停止。

如果您需要更多信息,请随时问我。提前致谢!

【问题讨论】:

  • 您要开始的活动的班级名称是什么?如果不是 StartActivity,那是你的问题。
  • 是的,名字是StartActivity,我之前查过。昨天,我的代码被 vs(可能是 Xamarin 问题)“缓存”了。今晚我会再次测试。

标签: android android-fragments android-activity xamarin xamarin.android


【解决方案1】:

在您的代码return base.OnCreateView(inflater, container, savedInstanceState); 中,我不知道为什么这对您加载片段视图有用,在我这边我应该返回view 进行布局。

无论如何,以下演示对我有用:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    var view = inflater.Inflate(Resource.Layout.Choir_Fragment, container, false);
    Button button = view.FindViewById<Button>(Resource.Id.myButton);
    button.Click += delegate
    {
        //var intent = new Intent(this.Context, typeof(StartActivity));
        var intent = new Intent(Activity, typeof(StartActivity));
        StartActivity(intent);
    };
    return view;
}

以下是有关我的项目的更多信息:

如果需要这个demo,请留言。

【讨论】:

  • 这是正确的,但我的问题是 vs2015 运行的是旧代码。也许 Windows 模拟器有这个问题
  • @user3535054,好的,有时当我遇到这样的问题时,我会创建一个新项目并再次测试这些代码,无论如何,谢谢您标记我的答案。
  • 这对我来说真的很烦人,Xamarin 有问题要调试,此时您的部分解决方案是可行的。谢谢!
  • 这工作正常但是 this.Context 在这里是什么意思@Grace Feng - MSFT?
【解决方案2】:

尝试将return base.OnCreateView(inflater, container, savedInstanceState); 更改为return view

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多