我是Mono For Android的新手,我试图将一个类型文本数据从activity1.cs上的一个EditText发送到另一个活动中的TextView,但它不起作用。 这是代码:
这是Activity1.cs:
public string Item;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button AddButton = FindViewById<Button>(Resource.Id.AddButton);
Button ViewButton = FindViewById<Button>(Resource.Id.ViewButton);
EditText addNewAssignmentField = FindViewById<EditText>(Resource.Id.addNewAssignmentField);
AddButton.Click += delegate
{
if (addNewAssignmentField.Text == "")
{
Toast.MakeText(this, "Please Write Assignment To Add", ToastLength.Short).Show();
}
else
{
Item = addNewAssignmentField.Text;//.ToString();
Toast.MakeText(this, "Assignment Added!", ToastLength.Short).Show();
addNewAssignmentField.Text = "";
ShowMessage(Item); //ignore this
}
};
ViewButton.Click += delegate
{
StartActivity(typeof(ViewListActivity));
};
}
这是另一项活动:
Activity1 ac1 = new Activity1();
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "ListLayout" layout resource
SetContentView(Resource.Layout.ListLayout);
Button button1 = FindViewById<Button>(Resource.Id.button1);
var listItemsTxt = new TextView(this);
EditText itemsList = FindViewById<EditText>(Resource.Id.itemsList);
itemsList.Text = ac1.Item;
}
另一个活动的EditText没有从Activity1.cs上的EditText获取文本
谢谢!
答案 0 :(得分:0)
你应该通过意图传递它
在您的第一个活动中
Intent intent = new Intent(Activity1.this, Activity2.class);
intent.putStringExtra("edit_text_content", myEditText.getText().toString());
startActivity(intent);
在您的第二个活动onCreate
String text = getIntent().getStringExtra("edit_text_content");
myEditText.setText(text);
答案 1 :(得分:0)
您的问题是假设您可以使用Activity
创建new
的实例...
Activity1 ac1 = new Activity1();
...永远不要试图这样做,它不会起作用。因此这条线......
itemsList.Text = ac1.Item;
...永远不会是从另一个Activity
访问数据的有效方法。
执行此操作的正确方法是将数据作为extra
中的Intent
传递,用于启动第二个Activity
。
我没有使用Mono进行编程 - 尽管我原来是一名C#程序员,但我决定学习Java(无论如何它们都非常相似)。
翻译(在我的脑海中)从我如何用Java做到如何在Mono中完成,尝试这样的事情......
Intent i = new Intent();
i.SetClass(this, typeof(ViewListActivity));
i.PutExtra("TheItem", item);
StartActivity(i);
然后在第二个Activity
中,类似onCreate(...)
中的以下内容......
protected override void OnCreate(Bundle bundle)
{
...
Intent i = GetIntent();
itemsList.Text = i.GetStringExtra("TheItem");
}
正如我所说,我不是Mono程序员,因此我可能没有正确的方法语法,但我希望这说明如何将数据从一个Activity
传递到另一个{。
答案 2 :(得分:0)
好的,我终于成功了! 这是其他新用户的工作代码: 活动1.cs:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.sendBtn);
EditText editText = FindViewById<EditText>(Resource.Id.editText1);
button.Click += delegate
{
string username = editText.Text.ToString();
Intent intent = new Intent();
intent.SetClass(this, typeof(Activity2));
intent.PutExtra("username", editText.Text);
StartActivity(intent);
};
}
Activity2.cs:
public class Activity2 : Activity
{
string itemContent;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.layout1);
var textView1 = new TextView(this);
EditText editTxt = FindViewById<EditText>(Resource.Id.editTxt);
itemContent = Intent.GetStringExtra("username");
editTxt.Text = itemContent;
}
}
谢谢大家的帮助!