Android 添加onclicklistener时应用程序崩溃

Android 添加onclicklistener时应用程序崩溃,android,Android,我对android编程有点陌生。 我在向按钮添加Onclicklistener时遇到了很多麻烦。 当我删除该部分时,应用程序运行良好。 当我添加它时,应用程序立即崩溃。 以下是我的主要活动代码: public class LoginActivity extends Activity { Button pwrecovery; Context context = getApplicationContext(); CharSequence text ="hello toas

我对android编程有点陌生。 我在向按钮添加Onclicklistener时遇到了很多麻烦。 当我删除该部分时,应用程序运行良好。 当我添加它时,应用程序立即崩溃。 以下是我的主要活动代码:

 public class LoginActivity extends Activity {

    Button pwrecovery;
    Context context = getApplicationContext();
    CharSequence text ="hello toast!";
    int duration = Toast.LENGTH_LONG;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set up notitle
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //set up full screen
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login);

    pwrecovery=(Button) findViewById(R.id.pwrecovery);
        pwrecovery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }
        });
有人知道为什么会这样吗

提前谢谢各位

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".LoginActivity"
    android:orientation="vertical"
    android:background="@color/blue">


    <ImageView
        android:layout_width="99dp"
        android:layout_height="91dp"
        android:id="@+id/imageView"
        android:src="@drawable/logo"
        android:layout_gravity="center"
        android:background="#02496b"
        android:layout_marginTop="10dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/quote_eng"
        android:id="@+id/textView"
        android:layout_gravity="center"
        android:layout_marginTop="15dp"
        android:singleLine="true"
        android:textColor="#ffffffff" />



    <EditText
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        android:textColorHint="#ffffff"
        android:textColor="#ffffff"
        android:id="@+id/editText"
        android:capitalize="none"
        android:hint="E-mail"
        android:singleLine="true"
        android:layout_marginTop="30dp"
        android:layout_gravity="center"
        android:paddingLeft="15dp"
         />

    <EditText
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/editText2"
        android:hint="Password"
        android:fontFamily=""
        android:layout_marginTop="5dp"
        android:layout_gravity="center"
        android:textColorHint="#ffffff"
        android:paddingLeft="15dp"/>


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sign_in"
        android:text="@string/sign_in"
        android:textColor="#ffffff"
        android:background="@drawable/button_signin4"
        android:layout_gravity="center"
        android:layout_marginTop="25dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:paddingLeft="35dp"
        android:id="@+id/sign_in_fd"
        android:background="@drawable/button_fblogin_small2"
        android:text="@string/logfb"
        android:textSize="13dp"
        android:layout_gravity="center"
        android:layout_marginTop="35dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sign_in_fb"
        android:background="@drawable/button_glogin_small"
        android:text="@string/logg"
        android:textColor="#ffffff"
        android:paddingLeft="35dp"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"/>

   <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    >




    <Button
        android:id="@+id/pwrecovery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/lost_password"
        android:textColor="#ffffff"
        android:gravity="left"
        android:textSize="18dp"
        android:clickable="true"/>


    <TextView
        android:id="@+id/signup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/sign_up"
        android:textColor="#ffffff"
        android:gravity="right"
        android:textSize="18dp"
        android:clickable="true"/>
   </RelativeLayout>




     </LinearLayout>

由于无法发布logcat,请尝试此选项

public class LoginActivity extends Activity {

    Button pwrecovery;
    Context context;
    Stringtext ="hello toast!";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set up notitle
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //set up full screen
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login);
        context = this;
        pwrecovery=(Button) findViewById(R.id.pwrecovery);
        pwrecovery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
                toast.show();
            }
        });

请使用完全限定的活动对象而不是上下文

    pwrecovery.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Toast toast = Toast.makeText(LoginActivity .this, text, duration);
            toast.show();
        }
    });

相反,你也可以这样使用烤面包:

Toast.makeText(getApplicationContext(), "Please Enter Your Code & Passkey", Toast.LENGTH_LONG).show();

只需从

Toast toast = Toast.makeText(context, text, duration);
            toast.show();


在完全创建实例之前调用了实例方法,并将其存储为成员变量

public class LoginActivity extends Activity {

    Context context = getApplicationContext();

活动是上下文对象。该变量不是必需的,应替换为
LoginActivity。这个

可以发布崩溃日志吗?查找以
E/
开头并包含由
引起的短语
的行。我猜
findViewById()
找不到
R.id.pwrecovery
。能否显示您的活动\u login.xml?为什么设置
Context=getApplicationContext()。不是很好的方法。删除
getApplicationContext()
和oncreate部分declare
context=getApplicationContext()
,并确保您的ID。show xml我认为您的按钮pwrecovery为空,并且在活动\u登录布局中具有不同的ID检查您是否已从布局文件中正确声明了按钮名称。它可能类似于android:id=“@+id/yourButtonName”
谢谢你,修复了它!那么问题出在我一开始的声明中了?看来你没有正确地声明
context
。我真的不知道如何:S
public class LoginActivity extends Activity {

    Context context = getApplicationContext();