为什么我在这一行上收到错误?

时间:2017-01-11 03:57:24

标签: java android android-studio-2.2

为什么我在userInput = (EditText) findViewById(R.id.editText);这一行显示错误?我觉得这个工作,两个文件中的ID匹配。

这是MainActivity.java文件

package org.example.someone.tamsky;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.*;

public class MainActivity extends AppCompatActivity {
    private EditText userInput;

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

    userInput = (EditText) findViewById(R.id.editText);
}

这是activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="org.example.garen.tamsky.MainActivity">

    <TextView
        android:text="Welcome to WOMP!"
        android:layout_width="125dp"
        android:layout_height="17dp"
        tools:layout_editor_absoluteY="8dp"
        android:id="@+id/textView"
        android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="Name"
        android:ems="10"
        android:id="@+id/editText"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        app:layout_constraintLeft_toLeftOf="parent"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="Password"
        android:ems="10"
        android:id="@+id/editText2"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="8dp"
        app:layout_constraintTop_toBottomOf="@+id/editText"
        app:layout_constraintLeft_toLeftOf="parent"/>
</android.support.constraint.ConstraintLayout>

5 个答案:

答案 0 :(得分:2)

您需要在onCreate方法

中初始化您的观看次数
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

    userInput = (EditText) findViewById(R.id.editText);
}

答案 1 :(得分:0)

userInput = (EditText) findViewById(R.id.editText);onCreate();

答案 2 :(得分:0)

Views必须在Activity创建onCreate时初始化,您必须在onCreate上发表您的观点:

package org.example.someone.tamsky;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.*;

public class MainActivity extends AppCompatActivity {
    private EditText userInput;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // here init your views
        userInput = (EditText) findViewById(R.id.editText);
    }
}

答案 3 :(得分:0)

在任何活动中,您必须使用oncreate方法初始化您的小部件ID 在你的oncreate方法中写下这个 userInput = (EditText) findViewById(R.id.editText);

答案 4 :(得分:0)

当您致电setContentView(R.layout.activity_main);时,您的活动附加了视图。 userInput = (EditText) findViewById(R.id.editText); onCreatesetContentView之前拨打电话userInput = (EditText) findViewById(R.id.editText);,这就是为什么你会收到错误的原因。

只需将setContentView(R.layout.activity_main); onCreate放在mget