2011-10-04 71 views
0

为什么text2.Text =“message”在我的代码中不起作用? 我想在函数中以这种方式工作,参见代码。 我在Visual Stduio在C#开发具有单声道的Android为什么text2.Text =“message”在我的代码中不起作用?

的源代码:

using System; 
using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 

namespace ChatClient_Android 
{ 
[Activity(Label = "ChatClient_Android", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainChat : Activity 
{ 
    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 
     EditText text2 = FindViewById<EditText>(Resource.Id.text2); 
    } 

    private void recieved() 
    { 
    text2.Text = "mesage"; // The text2 does not existe in this context 

    } 
} 

}

+0

文本2超出范围。如果你希望在另一个方法中重用它,你需要在方法之上声明它。 尝试像这样: – DaveHogan

回答

4

EditText text2声明不是全局的,但该方法。把EditText text2;放在课堂上。

应该是这样的:

public class MainChat : Activity 
{ 
    EditText text2; // <----- HERE 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Main); 
     text2 = FindViewById<EditText>(Resource.Id.text2); 
    } 

    private void recieved() 
    { 
    text2.Text = "mesage"; 

    } 
} 
+0

非常感谢:P – Zav

+0

如果这个工作适合您,请不要忘记接受答案。 –

1

text2是内部OnCreate定义,因此received对此一无所知。

您需要定义文本2为一类领域,如:

public class MainChat : Activity 
{ 
    private EditText text2; 
    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 
     text2 = FindViewById<EditText>(Resource.Id.text2); 
    } 

    private void recieved() 
    { 
    text2.Text = "mesage"; // The text2 does not existe in this context 

    } 
} 
相关问题