android中的控件是否在该活动中不可公开访问?

android中的控件是否在该活动中不可公开访问?,android,android-edittext,Android,Android Edittext,android中的控件在该活动(.java文件)中不可公开访问 这里是edittext字段txt1-我想在函数public void clr()中访问它 我怎么做?是可能的还是我做错了什么 这可能是一个非常基本的qn。但我对Java和Android还很陌生——尽管我对C#很有经验。Pl帮助 我知道我可以将txt1、txt2作为参数传递给clr函数。但是我想知道上面提到的是否可行。您应该在类级别声明EditText字段,那么变量txt1将在您的clr()方法中可见。您应该在类级别声明EditTex

android中的控件在该活动(.java文件)中不可公开访问

这里是edittext字段txt1-我想在函数public void clr()中访问它

我怎么做?是可能的还是我做错了什么

这可能是一个非常基本的qn。但我对Java和Android还很陌生——尽管我对C#很有经验。Pl帮助


我知道我可以将txt1、txt2作为参数传递给clr函数。但是我想知道上面提到的是否可行。

您应该在类级别声明EditText字段,那么变量txt1将在您的clr()方法中可见。

您应该在类级别声明EditText字段,那么变量txt1将在您的clr()中可见方法。

如果您不是编程新手,那么您应该知道必须在该类中将变量声明为全局变量才能在任何方法中访问它。您应该在类内声明它,但在任何特定方法之外。

如果您不是编程新手,然后,您应该知道必须在该类中将变量声明为全局变量才能在任何方法中访问它。您应该在类内声明它,但在任何特定方法之外声明它。

请尝试以下操作:

TextView res;
EditText txt1;
EditText txt2;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    res=(TextView)findViewById(R.id.textView1);

    txt1 =(EditText) findViewById(R.id.editText1);
    txt2 =(EditText) findViewById(R.id.editText2);

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

        //Some code here

        }
    });

    Button btnClr=(Button) findViewById(R.id.button2);
    btnClr.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            clr();

        }
    });


}


public void clr(){

    txt1.setText("");
    txt2.setText("");

    res.setText("");

    txt1.requestFocus();

}
请尝试以下操作:

TextView res;
EditText txt1;
EditText txt2;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    res=(TextView)findViewById(R.id.textView1);

    txt1 =(EditText) findViewById(R.id.editText1);
    txt2 =(EditText) findViewById(R.id.editText2);

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

        //Some code here

        }
    });

    Button btnClr=(Button) findViewById(R.id.button2);
    btnClr.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            clr();

        }
    });


}


public void clr(){

    txt1.setText("");
    txt2.setText("");

    res.setText("");

    txt1.requestFocus();

}
C#开发人员觉得android难以理解的第一件事是控件。VisualStudio提供设计器来放置控件,当您在窗体上放置控件时,它会自动创建相应类的实例并使其可访问。它创建了一个分部类,在将代码组合在一起后,该分部类将创建一个完整的类

对于android,您有责任创建变量,因为它本身并不创建变量。设计器只是一个屏幕布局,您无法访问它。执行此操作的标准方法是创建一个您希望在类中访问的类型的变量,然后通过使用findbyid访问该控件来分配该控件

您定义的变量可以有自己的作用域。因此,如果你让它在类范围内可访问,那么它就不应该是一个问题。

C#开发者觉得android难以理解的第一件事是控件。VisualStudio提供设计器来放置控件,当您在窗体上放置控件时,它会自动创建相应类的实例并使其可访问。它创建了一个分部类,在将代码组合在一起后,该分部类将创建一个完整的类

对于android,您有责任创建变量,因为它本身并不创建变量。设计器只是一个屏幕布局,您无法访问它。执行此操作的标准方法是创建一个您希望在类中访问的类型的变量,然后通过使用findbyid访问该控件来分配该控件


您定义的变量可以有自己的作用域。因此,如果您使其在类范围内可访问,则不应成为问题。

在类级别声明EditText:

     Class MyClass extends Activity {

     final EditText txt1;

         public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            txt1 =(EditText) findViewById(R.id.editText1);
            }
     }

在类级别声明EditText:

     Class MyClass extends Activity {

     final EditText txt1;

         public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            txt1 =(EditText) findViewById(R.id.editText1);
            }
     }

我猜你代码中的错误是因为

方法内声明的最终变量的范围仅在方法内。 在方法之外无法访问它。在方法返回后,最终的局部变量确实被销毁

所以你必须使你的edittext变量成为你的类级别

看到了吗?这就是你不能进入这里的原因

 public void clr(){

    txt1.setText("");
    txt2.setText("");

    res.setText("");

    txt1.requestFocus();

}

我猜你代码中的错误是因为

方法内声明的最终变量的范围仅在方法内。 在方法之外无法访问它。在方法返回后,最终的局部变量确实被销毁

所以你必须使你的edittext变量成为你的类级别

看到了吗?这就是你不能进入这里的原因

 public void clr(){

    txt1.setText("");
    txt2.setText("");

    res.setText("");

    txt1.requestFocus();

}

我只是在同一个类中声明它。。。在公共类内MainActivity扩展Activity我是说在类本身内,而不是在OnCreate中我只是在同一个类中声明它。。。在公共类内部MainActivity扩展了Activity我是说在类本身内部,而不是在onCreateYes中。我尝试了这个-我将fn和textedit都设置为公共的-但是它不允许textedit成为公共的(公共EditText txt1)。它显示错误-非法修饰符存在。我尝试了这个-我将fn和textedit都设置为公共的-但是它不允许textedit成为公共的(公共EditText txt1)。它显示错误-非法修饰符presentNot global。永远不要让活动资源全球化,这是自找麻烦,而不是全球化。永远不要让活动资源全球化,这是自找麻烦。是的。我管灯:-)是的。我管灯:-)