0

我是 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 获取文本

谢谢你!

4

3 回答 3

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);
于 2012-10-26T15:27:59.880 回答
0

你的问题是假设你可以创建一个Activityusing new...

Activity1 ac1 = new Activity1();

...永远不要尝试这样做,这是行不通的。因此这条线...

itemsList.Text = ac1.Item;

...永远不会是从另一个访问数据的有效方式Activity

正确的做法是将数据作为一个extra携带的 in传递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到另一个。

于 2012-10-26T15:28:23.653 回答
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;
    }
}

谢谢大家帮助我!

于 2012-10-27T11:51:31.103 回答