Android事件监听器的初始化崩溃应用程序

时间:2013-11-25 05:10:15

标签: java android android-xml android-event

我正在使用AVD模拟器来运行apk。我创建了一个简单的活动,它有两个按钮,但每当我为其中任何一个编写代码时,应用程序都不会启动,不包括初始化它们。

如果我声明如下的actionlistener(星号之间的代码),它会导致apk在启动时抛出错误。我试图在xml中放置“android:onClick="btnLoginClicked”,但是我得到了相同的结果。

任何人都能告诉我为什么会这样吗?我觉得我错过了一些非常简单的事情。

package uk.ac.aber.cs22120.fuzzyNinja.pathFinder;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
//import android.view.View;
import android.widget.*;

public class ActivityLogin extends Activity {

    private Button btnLogin; 
    private ProgressBar progressBar_Login;
    //    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        btnLogin = (Button) findViewById(R.id.btnLogin);
        progressBar_Login = (ProgressBar) findViewById(R.id.progressBar_Login);

***************************
        //btnLogin.setOnClickListener(btnLoginClickListener);
***************************

        setContentView(R.layout.activity_login);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_login, menu);
        return true;
    }
*************************
    //private OnClickListener btnLoginClickListener = new OnClickListener(){
    //  public void onClick(View v){
    //          
    //  }
    //};
*************************
}

以下是此活动的XML:https://www.dropbox.com/s/d91t6xqrusi1s2t/activity_login.xml

2 个答案:

答案 0 :(得分:2)

试试这个..

初始化任何setContentView(R.layout.activity_login);super.onCreate等之前,明确button以下textview

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        btnLogin = (Button) findViewById(R.id.btnLogin);
        progressBar_Login = (ProgressBar) findViewById(R.id.progressBar_Login);

***************************
        //btnLogin.setOnClickListener(btnLoginClickListener);
***************************        
    }

答案 1 :(得分:0)

您可以随时在onCreate()方法中对布局进行充气后初始化视图中的事件,如果没有它,您的应用程序将无法找到您正在尝试的视图。

在初始化视图之前,请尝试以下代码并设置setcontentView()方法。

public class ActivityLogin extends Activity {

private Button btnLogin; 
private ProgressBar progressBar_Login;


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

    btnLogin = (Button) findViewById(R.id.btnLogin);
    progressBar_Login = (ProgressBar) findViewById(R.id.progressBar_Login);

    btnLogin.setOnClickListener(btnLoginClickListener);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_login, menu);
    return true;
}

private OnClickListener btnLoginClickListener = new OnClickListener(){
  public void onClick(View v){
    //your logic here. 

  }
};

}