2015-07-24 3 views
3

Моя деятельность такова, что это LogInActivity, которая использует макет с тем же именем, когда я добавляю слушателей действий для кнопок, приложение вылетает , пожалуйста, помогите мне из этого происходит от двух последних днейМое приложение вылетает, когда я использую OnClicklistener для кнопки, даже когда она пуста

import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
import android.view.View.OnClickListener; 

import java.io.Serializable; 


public class LogInActivity extends ActionBarActivity { 

    private Button signUpButton; 
    private Button logInButton; 
    private Intent signUpChoiceIntent; 
    private OnClickListener signupListener; 
    private HumLogController humLogController; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setIntentAndButton(); 
     setContentView(R.layout.activity_log_in); 
    } 

    private void setIntentAndButton(){ 
     signUpChoiceIntent = new Intent (this , SignUpChoiceActivity.class); 
     signUpButton = (Button) findViewById(R.id.firstSignupButton); 
     logInButton = (Button) findViewById(R.id.firstLoginButton); 
     signupListener = new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }; 
     signUpButton.setOnClickListener(signupListener); 
    } 

} 

Компоновка файл, две кнопки создающих всех проблем:

<RelativeLayout 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:background="#ff0aff62" 
    android:id="@+id/logInRelativeLayout"> 


    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/logInUsernameField" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="126dp" 
     android:textSize="30sp" 
     android:background="#ffffffff" 
     android:hint="@string/username_field_hint_text" 
     android:lines="1" 
     android:singleLine="true" 
     android:maxLength="40" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPassword" 
     android:id="@+id/logInPasswordField" 
     android:hint="@string/password_field_hint_text" 
     android:textSize="30sp" 
     android:background="#ffffffff" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="176dp" 
     android:lines="1" 
     android:singleLine="true" 
     android:maxLength="15" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/sign_in_button_text" 
     android:id="@+id/firstLoginButton" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="226dp" 
     android:background="#fff54d70" 
     android:textSize="30sp" 
     android:textColor="#ffffffff" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/sign_up_button_text" 
     android:id="@+id/firstSignupButton" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginTop="376dp" 
     android:textSize="30sp" 
     android:background="#ff0aff62" 
     android:textColor="#ff000000"/> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/or_text" 
     android:id="@+id/textView" 
     android:textSize="30sp" 
     android:layout_below="@+id/firstLoginButton" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="306dp" 
     android:layout_marginLeft="136dp" 
     android:layout_marginStart="136dp"/> 

//I am not missing the /relative layout closing tag, it is just not here 

И это трассировка стеки:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.praduman.humlog/com.example.praduman.humlog.LogInActivity}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
     at android.app.ActivityThread.access$600(ActivityThread.java:141) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5103) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at com.example.praduman.humlog.LogInActivity.setIntentAndButton(LogInActivity.java:41) 
     at com.example.praduman.humlog.LogInActivity.onCreate(LogInActivity.java:26) 
     at android.app.Activity.performCreate(Activity.java:5133) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
        at android.app.ActivityThread.access$600(ActivityThread.java:141) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5103) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:525) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
        at dalvik.system.NativeStart.main(Native Method) 
+1

Что такое ошибка? StackTrace, пожалуйста! –

+0

SignupListener, то есть когда новый OnClickListener создан, все сбой, даже он пуст –

+0

Я знаю, что он сбой, но вывести вывод LogCat! –

ответ

1

Попробуйте это:

public class LogInActivity extends ActionBarActivity { 

     private Button signUpButton; 
     private Button logInButton; 
     private Intent signUpChoiceIntent; 
     private OnClickListener signupListener; 
     private HumLogController humLogController; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_log_in); 
      setIntentAndButton(); 
     } 

     private void setIntentAndButton(){ 
      signUpChoiceIntent = new Intent (this , SignUpChoiceActivity.class); 
      signUpButton = (Button) findViewById(R.id.firstSignupButton); 
      logInButton = (Button) findViewById(R.id.firstLoginButton); 
      signupListener = new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        System.out.println("clicked"); 
       } 
      }; 
      signUpButton.setOnClickListener(signupListener); 
     } 

    } 
+0

Да, это работает, Большое спасибо :-) –

+0

Если бы это помогло вам, пожалуйста, отметьте мой ответ как правильный или upvote atleast.thanks – Aakash

1

Вы звоните setIntentAndButton() - в котором вы подключаете слушателей - прежде чем позвонить setContentView(). Таким образом, кнопки не были созданы, когда вы пытаетесь подключить слушателей, а вызовы на findViewById возвратят null. Вам нужно создать свое представление, прежде чем пытаться манипулировать объектами в нем.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_log_in); 
    setIntentAndButton(); 
} 
+0

Да это работает ,,,,, :-) :-) Большое спасибо –

3
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setIntentAndButton(); 
    setContentView(R.layout.activity_log_in); 
} 

Должно быть:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_log_in); 
    setIntentAndButton(); 
} 

Причина заключается в том, что если вы не установите ресурс вида контента, все методы findViewByID возвратит нуль.

Вы также можете сократить это:

signupListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }; 
signUpButton.setOnClickListener(signupListener); 

к этому:

signUpButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }; 
); 
+0

да, это работает большое спасибо :-) –

+0

@PradumanRaparia пожалуйста, рассмотрите upvoting ответ! Хорошего дня! –

+0

@PradumanRaparia просто пингует вас, чтобы вы могли видеть, как вы можете упростить свой код еще немного! –

Смежные вопросы