gpt4 book ai didi

c# - 在 Activity 之间共享数据(字符串),将其保存并添加到 ListView C# Xamarin

转载 作者:行者123 更新时间:2023-11-30 23:32:53 25 4
gpt4 key购买 nike

首先我必须提到我是 Android 应用程序开发的新手。我正在使用 Xamarin (C#) 开发应用程序。这就是问题所在。我想编写简单的 ToDoList 应用程序来学习如何在 Activity 之间存储/共享数据。

“添加”按钮位于主布局中。当用户单击它时,会出现另一个屏幕,用户可以在其中命名(EditText)任务并添加其描述(EditText)。当用户单击该屏幕中的“完成”按钮时,应用程序将用户重定向到主屏幕并将用户的任务添加到 ListView 。

我做了一些研究,发现我可以使用 SharedPreferences 来做到这一点,将数据保存到设备上的文件或 sql。

我决定使用 SharedPreferences。问题是,我发现的关于 SharedPrefences 的所有内容(相信我,我搜索了很多)都是用 Java 编写的,这不是什么大问题,但是没有人提到过使用共享首选项在不同 Activity 之间共享数据。我的代码在下面,我真的为此苦苦挣扎了一天,所以请帮助我。

我的 MainActivity(“添加”按钮所在的位置):

    public class MainActivity : Activity
{
Button add;
ListView list;

protected override void OnCreate(Bundle bundle)
{


base.OnCreate(bundle);

///set layout
SetContentView(Resource.Layout.Main);

///define variables, buttons, lists
add = FindViewById<Button>(Resource.Id.add);
list = FindViewById<ListView>(Resource.Id.list);

///get string from secondActivity
var prefs = Application.Context.GetSharedPreferences("todolist", FileCreationMode.Private);
var preference = prefs.GetString("task", null);

///add string (preference) to list
List<string> lista = new List<string>();
lista.Add(preference);

///"convert" list to listview
ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Resource.Layout.Main, lista);
list.Adapter = adapter;

add.Click += delegate
{
StartActivity(new Intent(this, typeof(addActivity)));
};



}

}

我的第二个屏幕(第二个 Activity ):

    public class addActivity : Activity
{

/// define variables and create list
Button complete;
EditText name, description;

protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.add);

///variables
complete = FindViewById<Button>(Resource.Id.complete);
name = FindViewById<EditText>(Resource.Id.name);
description = FindViewById<EditText>(Resource.Id.description);

///converting to string
string title = name.Text.ToString();
string content = description.Text.ToString();

///pass string to MainActivity
complete.Click += delegate
{
if (String.IsNullOrEmpty(title))
{
Toast.MakeText(this, "Please enter task name", ToastLength.Short).Show();
}
else
{
var prefs = Application.Context.GetSharedPreferences("todolist", FileCreationMode.Private);
var prefEditor = prefs.Edit();
prefEditor.PutString("task", title);
prefEditor.Commit();
Toast.MakeText(this, "Task added", ToastLength.Short).Show();
StartActivity(new Intent(this, typeof(MainActivity)));

}
};


}

}

最佳答案

您可以在这里使用 SQLite 数据库。如果您想构建一个 ToDo 列表,我建议您这样做。它也会让您更轻松。

Xamarin 在此处提供了大量关于如何进行设置的文档:

https://developer.xamarin.com/guides/cross-platform/application_fundamentals/data/

他们还有一个示例应用程序,几乎可以完成您想在这里做的事情:

https://github.com/xamarin/mobile-samples/tree/master/Tasky

关于c# - 在 Activity 之间共享数据(字符串),将其保存并添加到 ListView C# Xamarin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34141750/

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