2017-05-19 184 views
0

我对android编程很陌生。 我在将Onclicklistener添加到按钮时遇到了很多麻烦。 当我删除该部分时,该应用程序运行良好。 当我添加它时,应用程序立即崩溃。 这里是我的主要活动代码:添加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> 
+1

你可以从崩溃中发布logcat吗?寻找一条开始'E /'的行,并且包含短语'Caused By'。我的猜测是'findViewById()'找不到'R.id.pwrecovery'。 –

+3

你可以显示你的activity_login.xml吗? –

+0

为什么你设置'Context context = getApplicationContext();'。不好的方法。删除'getApplicationContext()'和oncreate section声明'context = getApplicationContext()'并确保你的ID .show xml –

回答

0

,你是无法发布logcat的

​​
+1

谢谢,修复它!所以问题出现在我的声明中? – jonamar

+0

似乎你还没有正确地声明'context'。 – sam

+0

@jonamar你能接受这个答案吗? –

1

请使用替代方面完全合格的活动对象试试这一个。

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

相反,你也可以使用这样的吐司:

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

只需从

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

只是改变要

Toast toast = Toast.makeText(LoginActivity.this, text, Toast.LENGTH_LONG).show(); 
0

您之前称为一个实例方法实例已完全创建,而y OU已经存储作为变量的成员

public class LoginActivity extends Activity { 

    Context context = getApplicationContext(); 

活动语境对象。该变量不是必需的,应该替换为LoginActivity.this

相关问题