Android:调用EditText getText()方法时的NullPointerException



我最近更新了我的eclipse ADT,现在当我开始新的活动时,我在相应的类中实现了更多的方法,我不确定我应该将变量连接到相应视图的方式是否已经改变。总之,我是这样做的:

public class LoginActivity extends ActionBarActivity {
EditText editTextNumeroCartao,
         editTextPassword;
InternetConnectivityManager icm;
ProgressDialog pDialog;
UserFunctions userFunction;
SessionManager session;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
    // conecta as variáveis ás respectivas views
    editTextNumeroCartao = (EditText) findViewById(R.id.editTextNumeroCartao);
    editTextPassword = (EditText) findViewById(R.id.editTextPassword);
    icm = new InternetConnectivityManager(getApplicationContext());
}

但是当我试图在这个EditText's中获取文本时,我得到空指针异常…

public void doLogin(View view) {
    if(icm.isOnline()) {
        String numeroCartao = this.editTextNumeroCartao.getText().toString();
        String password = this.editTextPassword.getText().toString();
        if(numeroCartao == null || numeroCartao.trim().equals("") || password == null || password.trim().equals("")) {
            Toast.makeText(getApplicationContext(), "Insere todos os dados", Toast.LENGTH_LONG).show();
        } else {
            new LoginAsyncTask().execute(numeroCartao, password);
        }
    } else {
        Toast.makeText(getApplicationContext(), "Não estás ligado à Internet", Toast.LENGTH_LONG).show();
    }
    return;
}

My activity_login xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="me.pap.bruno.esdahconnect.LoginActivity"
tools:ignore="MergeRootFrame" />

My fragment_login xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="me.pap.bruno.esdahconnect.LoginActivity$PlaceholderFragment" >
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Número do Cartão"
    android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
    android:id="@+id/editTextNumeroCartao"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="number" >
    <requestFocus />
</EditText>
<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="Password"
    android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
    android:id="@+id/editTextPassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPassword" />
<Button
    android:id="@+id/buttonLogin"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="Entrar" 
    android:onClick="doLogin" />

有人能帮我吗?谢谢!

editTextNumeroCartaoeditTextPasswordfragment_login.xml中,但您使用的是setContentView(R.layout.activity_login);

这就是为什么它给你一个NullPointerException,因为提到的EditText不能在XML中找到。

setContentView(R.layout.activity_login);更改为setContentView(R.layout.fragment_login);

EditText代码移动到您的Fragment

你已经在片段布局中声明了你的editText,但在你的代码中你是通过activity_man.xml访问的。

将其更改为Fragment布局或将edittext相关代码移动到Fragment

嗯,你在尝试:

editTextNumeroCartao = (EditText) findViewById(R.id.editTextNumeroCartao);
editTextPassword = (EditText) findViewById(R.id.editTextPassword);

在Activity中,但是这些元素在Fragment中。我认为它们为空是有原因的

相关内容

最新更新