首先我要提一下,我是Android应用程序开发的新手。我正在使用Xamarin(C#)来开发应用程序。这是问题所在。我想编写简单的ToDoList应用程序来学习如何在活动之间存储/共享数据。
按钮“添加”放置在主布局中。当用户单击它时,另一个屏幕显示用户可以命名(EditText)任务的位置并添加其描述(EditText)。当用户在该屏幕中单击“完成”按钮时,app会将用户重定向到主屏幕并将用户的任务添加到列表视图中。
我做了一些研究,发现我可以使用SharedPreferences,将数据保存到设备上的文件或sql。
我决定选择SharedPreferences。问题是,我发现有关SharedPrefences的所有内容(我经常搜索,相信我)是用Java编写的,这不会是一个大问题,但没有人提到使用共享首选项在不同活动之间共享数据。我的代码在下面,我真的很挣这一天,所以请帮助我。
我的主要活动(按钮“添加”是):
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)));
};
}
}
我的第二个屏幕(第二个活动):
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)));
}
};
}
}
答案 0 :(得分:2)
您可以在此处使用SQLite数据库。如果你想建立一个ToDo列表,我建议这样做。它也会让你更容易。
Xamarin有很多关于如何在此设置的文档:
https://developer.xamarin.com/guides/cross-platform/application_fundamentals/data/
他们还有一个示例应用程序,可以完成你想要做的事情:
答案 1 :(得分:0)
您可以通过Intent
您应该在之前定义它,而不是在Start Activivty的arg中定义该intent,然后使用putExtra
方法添加字符串