Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么要在onclick方法中找到EditText_Android_Android Edittext - Fatal编程技术网

Android 为什么要在onclick方法中找到EditText

Android 为什么要在onclick方法中找到EditText,android,android-edittext,Android,Android Edittext,我是一个编程新手。最近,我试图自学android和java,所以我有一些基本的疑问,请帮我澄清一下 我想在单击按钮(使用XML文件中的onClick属性)后显示在EditText中键入的文本。只有在“Press”方法中找到EditText,我的程序才能工作 但如果全局查找文本字段,则不会。有人能解释一下吗 这是我的密码 public class MainActivity extends Activity { String text; @Override

我是一个编程新手。最近,我试图自学android和java,所以我有一些基本的疑问,请帮我澄清一下

我想在单击按钮(使用XML文件中的onClick属性)后显示在EditText中键入的文本。只有在“Press”方法中找到EditText,我的程序才能工作 但如果全局查找文本字段,则不会。有人能解释一下吗

这是我的密码

public class MainActivity extends Activity {    
        String text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void Press  (View view) {

         EditText input =(EditText) findViewById(R.id.main_input);
        text= input.getText().toString();

          Toast.makeText(this, text,

          Toast.LENGTH_LONG).show();
        } 
    }
XML文件

<EditText
        android:id="@+id/main_input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/start"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="86dp"
        android:ems="10"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/maiinput"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="28dp"
        android:layout_marginTop="178dp"
        android:onClick="Press"
        android:text="Start" />

试试这种方法

public class MainActivity extends Activity {    
String text;
EditText input;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input =(EditText) findViewById(R.id.main_input);
}

public void clickme(View view) {
  text= input.getText().toString();
  Toast.makeText(MainActivity.this, text,Toast.LENGTH_LONG).show();
 } 
}
然后将
onClick=“clickme”
更改为
活动\u main.xml中的
按钮

public class MainActivity extends Activity {    
String text;
EditText input;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input =(EditText) findViewById(R.id.main_input);
}

public void clickme(View view) {
  text= input.getText().toString();
  Toast.makeText(MainActivity.this, text,Toast.LENGTH_LONG).show();
 } 
}
private EditText text;
private Button ok;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text=(EditText)findViewById(R.id.editText1);
    ok=(Button)findViewById(R.id.button1);
    ok.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, text.getText().toString(), Toast.LENGTH_LONG).show();
        }
    });

}
并将
onClick=“clickme”
更改为
活动\u main.xml中的
按钮

private EditText text;
private Button ok;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text=(EditText)findViewById(R.id.editText1);
    ok=(Button)findViewById(R.id.button1);
    ok.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, text.getText().toString(), Toast.LENGTH_LONG).show();
        }
    });

}
你必须这样写,希望这对你有用

你必须这样写,希望这对你有用

来自评论:

我试图在mainactivity本身下面找到edittext,就像这个公共类mainactivity扩展了Activity{edittext input=(edittext)findViewById(R.id.main_input);但是它当时没有显示任何错误,只是在运行之后才显示错误。你能解释发生了什么吗

初始化类成员变量时,调用
findViewById()
太早。此时活动还没有
窗口,它将NPE

您应该调用
findViewById()

  • onCreate()
    或更高版本中,当出现
    窗口且未发生NPE时,以及
  • setContentView()
    之后,当有一个视图层次结构来实际查找某些内容时,可以返回非null
来自评论:

我试图在mainactivity本身下面找到edittext,就像这个公共类mainactivity扩展了Activity{edittext input=(edittext)findViewById(R.id.main_input);但是它当时没有显示任何错误,只是在运行之后才显示错误。你能解释发生了什么吗

初始化类成员变量时,调用
findViewById()
太早。此时活动还没有
窗口,它将NPE

您应该调用
findViewById()

  • onCreate()
    或更高版本中,当出现
    窗口且未发生NPE时,以及
  • setContentView()
    之后,当有一个视图层次结构来实际查找某些内容时,可以返回非null

你把
input=(EditText)findViewById(R.id.main_input);
放在哪里了?你把
EditText input
声明在mainactivity本身下面的什么地方了。我对编程非常陌生,所以请原谅我4个错误你把
input=(EditText)findViewById(R.id.main_input)放在哪里了
首先?您在mainactivity本身下面的哪里声明了
EditText input
?我对编程非常陌生,所以请原谅我4错误代码工作正常…我试图在mainactivity本身下面找到EditText,就像这个公共类mainactivity扩展活动{EditText input=(EditText)findViewById一样(R.id.main_input);但它当时没有显示任何错误,但只有在运行之后才显示错误。你能解释一下发生的代码工作正常吗?我试图在mainactivity下面找到edittext,就像这个公共类mainactivity extensed Activity{edittext input=(编辑文本)findViewById(R.id.main\u输入);但它当时没有显示任何错误,但只有在运行之后才显示错误。你能解释发生的情况吗?HKS人每个人都输入了代码,但没有人解释。现在我明白是我犯了错误。希望有像你这样的人来指导我。所以只有在我输入setcontentview之后我现在有一个窗口。在
onCreate
中有一个窗口,没有NPE;在
setContentView()之后
能找到一些东西吗谢谢你的帮助非常感谢。你能告诉我你是从哪里学到这个概念的吗。你能提供任何网站、书籍、论坛让我更有效地学习吗。我从网上找不到这类信息。我是通过阅读和编写代码,特别是阅读平台源代码,集中精力来学习的由于手头的一些问题,例如我正在处理的项目中的一个bug或某个问题。thks man每个人都输入了代码,但没有人解释它。现在我明白是我犯了错误。希望有像你这样的人来指导我。因此,只有在我输入setcontentview方法后,我才有一个正确的窗口。在
onCreate
中有一个窗口,没有NPE;在
setContentView()之后
能找到一些东西吗谢谢你的帮助非常感谢。你能告诉我你是从哪里学到这个概念的吗。你能提供任何网站、书籍、论坛让我更有效地学习吗。我从网上找不到这类信息。我是通过阅读和编写代码,特别是阅读平台源代码,集中精力来学习的由手头的某个问题给出,例如我正在处理的项目中的一个bug或某个问题。