2015-04-03 3 views
0

Я пытаюсь создать приложение с помощью Android Studio. Я использовал шаблон активности входа по умолчанию, а затем создал новую отдельную регистрационную активность. Он сбой с NullPointerException. Я пытался связать эти два вида деятельности вместе, как это:Диагностика NullPointerException после внесения изменений в мой код

LoginActivity.java:

public class LoginActivity extends Activity implements LoaderCallbacks<Cursor> { 

/** 
* A dummy authentication store containing known user names and passwords. 
* TODO: remove after connecting to a real authentication system. 
*/ 


private static final String[] DUMMY_CREDENTIALS = new String[]{ 
    "[email protected]:hello", "[email protected]:world" 
}; 

/** 
* Keep track of the login task to ensure we can cancel it if requested. 
*/ 
private UserLoginTask mAuthTask = null; 

// UI references. 
private AutoCompleteTextView mEmailView; 
private EditText mPasswordView; 
private View mProgressView; 
private View mLoginFormView; 

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

    Button mSignUpTextView; 
    mSignUpTextView = (Button)findViewById(R.id.SignUpButton); 
    mSignUpTextView.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(LoginActivity.this, SignUpActivity.class); 
      startActivity(intent); 
     } 
    }); 


    // Set up the login form. 
    mEmailView = (AutoCompleteTextView) findViewById(R.id.email); 
    populateAutoComplete(); 

    mPasswordView = (EditText) findViewById(R.id.password); 
    mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { 
      if (id == R.id.login || id == EditorInfo.IME_NULL) { 
       attemptLogin(); 
       return true; 
      } 
      return false; 
     } 
    }); 

    Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button); 
    mEmailSignInButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      attemptLogin(); 
     } 
    }); 

    mLoginFormView = findViewById(R.id.login_form); 
    mProgressView = findViewById(R.id.login_progress); 
} 

И SignUpActivity.java:

public class SignUpActivity extends ActionBarActivity { 

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


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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

И activity_login2.xml файл это:

<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:gravity="center_horizontal" 
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="com.redux.kumardivyarajat.attendance.LoginActivity" 
android:weightSum="1" 
android:id="@+id/activity_login2"> 

<!-- Login progress --> 
<ProgressBar android:id="@+id/login_progress" 
    style="?android:attr/progressBarStyleLarge" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:visibility="gone" /> 

<ScrollView android:id="@+id/login_form" 
    android:layout_width="match_parent" 
    android:layout_height="174dp"> 

    <LinearLayout android:id="@+id/email_login_form" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:weightSum="1" 
     android:touchscreenBlocksFocus="false"> 

     <AutoCompleteTextView 
      android:id="@+id/email" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/prompt_email" 
      android:inputType="textEmailAddress" 
      android:maxLines="1" 
      android:singleLine="true" 
      android:layout_weight="10.63"> 
      <requestFocus/> 
      </AutoCompleteTextView> 


     <EditText android:id="@+id/password" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/prompt_password" 
      android:imeActionId="@+id/login" 
      android:imeActionLabel="@string/action_sign_in_short" 
      android:imeOptions="actionUnspecified" 
      android:inputType="textPassword" 
      android:maxLines="1" 
      android:singleLine="true" /> 

     <Button android:id="@+id/email_sign_in_button" 
      style="?android:textAppearanceSmall" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:text="@string/action_sign_in_short" 
      android:textStyle="bold" /> 

    </LinearLayout> 
</ScrollView> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/SignupText" 
    android:text="@string/sign_up_from_login" 
    android:textColor="#ffff0500" /> 

<Button 
    style="?android:textAppearanceSmall" 
    android:id="@+id/SignUpButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="16dp" 
    android:text="Sign Up" 
    android:textStyle="bold" 
    android:layout_gravity="center_horizontal" /> 

</LinearLayout> 

Перед добавлением новой кнопки регистрации при активности входа приложение работает нормально, но теперь он сбой сразу.

LogCat показывает NullPointerException:

04-03 19:29:44.486 4648-4648/com.redux.kumardivyarajat.attendance E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.redux.kumardivyarajat.attendance, PID: 4648 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.redux.kumardivyarajat.attendance/com.redux.kumardivyarajat.attendance.LoginActivity}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2190) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2239) 
     at android.app.ActivityThread.access$800(ActivityThread.java:141) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5047) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at com.redux.kumardivyarajat.attendance.LoginActivity.onCreate(LoginActivity.java:69) 
     at android.app.Activity.performCreate(Activity.java:5249) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2154) 

Я понимаю обычные причины в NullPointerException, но у меня возникли проблемы с идентификацией, как это возможно в моем коде. Как я могу это решить?

+0

Опубликовать свой логарифм, а также добавить ли вы активность в файл манифеста? – Shvet

+0

да. Я добавил активность регистрации в файле манифеста android. Логарифг, хотя и странно, ничего не показывает. Его пробел. –

+0

напишите свой файл 'activity_login2.xml'. – Shvet

ответ

0

Можете ли вы проверить последние 2 элементов - EditText

android:id="@+id/SignupText" 

и кнопки

android:id="@+id/SignUpButton" 

оказывают действительное расположение родителя или нет?

Я не вижу родительского макета, определенного для этих элементов интерфейса.

+0

Да. Они имеют линейную компоновку в качестве родителя. Я не копировал код должным образом. –

1

Оказывается, что некоторые элементы моего приложения не были доступны для уровня API 14 и ниже, отдельные activity_login2.xml и activity_login2.xml (V14) файлов были сгенерированы автоматически.

NullPointerException был из-за того, что новая кнопка входа вверх не был определен во втором activity_login2.xml (V14) файл. Я обновил этот файл, и теперь приложение работает нормально.

+0

Спасибо за отправку решения. FYI, вы можете принять свой собственный ответ. –

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