gpt4 book ai didi

android - itemSelected 未在 Xamarin.Android 中触发

转载 作者:行者123 更新时间:2023-12-03 15:00:20 25 4
gpt4 key购买 nike

我正在尝试为我正在开发的社交应用程序开发一个注册菜单。我希望注册菜单包含一个包含五个 fragment 的 PageViewer。最后三个 fragment 包含一个 ListView,用户可以在其中“检查”关于它们自己的信息。 XML 在这里:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/layoutSignupLists">
<TextView
android:text="Add something here"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="@+id/signupListDescription" />
<ListView
android:id="@+id/interestListView"
android:layout_below="@id/signupListDescription"
android:layout_height="match_parent"
android:layout_width="match_parent" />
</RelativeLayout>

当最后三个 fragment 创建为正确显示时,此布局已膨胀。我已经为 ListView 中的 itemSelected 事件订阅了一个委托(delegate),如下所示:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//Inflate view and find content
View view = inflater.Inflate(Resource.Layout.signupFragLayout4, container, false);
interestListView = view.FindViewById <ListView>(Resource.Id.interestListView);
var desc = view.FindViewById<TextView>(Resource.Id.signupListDescription);

//Adds the description
desc.Text = GetString(Resource.String.profile_menu_edit_interests);

//Populate ListView
interestListView.Adapter = new ArrayAdapter<string>(Activity,
Resource.Layout.CheckedListViewItem, MainActivity.InfoNames[(int)InfoType.Interest]);
interestListView.ChoiceMode = ChoiceMode.Multiple;
interestListView.ItemSelected += (object sender, AdapterView.ItemSelectedEventArgs e) =>
{
if(!Interests.Contains(e.Position))
Interests.Add(e.Position);
else
Interests.Remove(e.Position);
};

return view;
}

在委托(delegate)中放置断点时,我发现它从未被调用,因此 ListView 在向右或向左滑动时重置。

如何使 fragment “保留”信息,以便每次显示 fragment 时都显示它?

最佳答案

将信息放在 MainActivity 中。您可以通过将此变量放在 fragment 类中来对其进行简单引用:

MainActivity mainActivity;
在您的 OnCreateView()放置这个来初始化它:
mainActivity = (MainActivity)Activity;
现在,如果您在 mainActivity 中有任何公共(public)变量,您可以在 fragment 中引用它们,例如:
textView.Text = mainActivity.VariableName;
此外,为了将信息放回 fragment 中,请重写“OnResume”方法,如下所示:
   public override void OnResume()
{
base.OnResume();
//Code to fill in all the information in your fragment again. I.E:
textView.Text = mainActivity.VariableName;
}

关于android - itemSelected 未在 Xamarin.Android 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com