NullPointerException в onCreate действия

У меня есть заставка, которая открывается, когда открыто мое приложение, а затем она заменяется LoginActivity, которая дает пользователю возможность войти в Twitter с помощью приложения. Это метод onCreate для LoginActivity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    // Show the Up button in the action bar.
    setupActionBar();
    Log.i("here", "login has started");
    Button loginTwitter = (Button) findViewById(R.id.twitterLoginButton);
    Button noLogin = (Button) findViewById(R.id.noLoginButton);
    loginTwitter.setOnClickListener(new View.OnClickListener() {
        /**
         * Login via Twitter
         */
        @SuppressLint("NewApi")
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(), PrepareRequestTokenActivity.class);
            startActivity(i);
        }
    });

    noLogin.setOnClickListener(new View.OnClickListener() {
        /**
         * Proceed to use app without login
         */
        @SuppressLint("NewApi")
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(i);
        }
    });


}

Когда приложение запускается, всплеск отображается нормально, но LoginActivity вызывает исключение NullPointerException, указывающее конкретно на строку 29, а именно: loginTwitter.setOnClickListener(new View.OnClickListener() {

Я даже не могу начать понимать, почему это происходит. У кого-нибудь есть идеи? Логкат ниже:

06-25 00:06:21.000: E/AndroidRuntime(4809): FATAL EXCEPTION: main
06-25 00:06:21.000: E/AndroidRuntime(4809): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tforan.blobtag4/com.tforan.blobtag4.LoginActivity}: java.lang.NullPointerException
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1852)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1873)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.ActivityThread.access$1500(ActivityThread.java:135)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.os.Looper.loop(Looper.java:150)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.ActivityThread.main(ActivityThread.java:4358)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at java.lang.reflect.Method.invokeNative(Native Method)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at java.lang.reflect.Method.invoke(Method.java:507)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at dalvik.system.NativeStart.main(Native Method)
06-25 00:06:21.000: E/AndroidRuntime(4809): Caused by: java.lang.NullPointerException
06-25 00:06:21.000: E/AndroidRuntime(4809):     at com.tforan.blobtag4.LoginActivity.onCreate(LoginActivity.java:29)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
06-25 00:06:21.000: E/AndroidRuntime(4809):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
06-25 00:06:21.000: E/AndroidRuntime(4809):     ... 11 more

Я должен добавить, что это работало нормально до обновления моего ADT, сервисов Play и т. Д. Спасибо за помощь!

Activity_login.xml:

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#D0E4F7"
tools:context=".LoginActivity" >

<ImageView
    android:id="@+id/loginLogo"
    android:contentDescription="@string/logo"
    android:layout_centerHorizontal="true"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_alignParentTop="true"
    android:src="@drawable/logo" />

<Button
    android:id="@+id/twitterLoginButton"
    style="@style/buttonText"
    android:layout_below="@+id/loginLogo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:background="@drawable/signinwithtwitter"
    android:textColor="#000000" />

<Button
    android:id="@+id/noLoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/twitterLoginButton"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="25dp"
    android:paddingTop="5dp"
    android:textSize="12dp"
    android:text="@string/declineLogin" />
</RelativeLayout>

person user2163853    schedule 25.06.2013    source источник
comment
Если вы считаете, что eclipse является виновником после обновления ADT, тогда попробуйте это   -  person CRUSADER    schedule 25.06.2013
comment
Пожалуйста, предоставьте файл activity_login.xml   -  person Dimmerg    schedule 25.06.2013
comment
добавлен файл activity_login.xml   -  person user2163853    schedule 25.06.2013
comment
использовать контекст действия Intent i = new Intent(LoginActivity.this, PrepareRequestTokenActivity.class). проверьте этот stackoverflow. com/questions/7298731/   -  person Raghunandan    schedule 25.06.2013


Ответы (3)


Попробуйте этот код может вам помочь

Просто измените

 loginTwitter.setOnClickListener(new OnClickListener() {

вместо

 loginTwitter.setOnClickListener(new View.OnClickListener() {

Используйте это решение

 Button loginTwitter = (Button) findViewById(R.id.twitterLoginButton);
    Button noLogin = (Button) findViewById(R.id.noLoginButton);
    loginTwitter.setOnClickListener(new OnClickListener() {
        /**
         * Login via Twitter
         */
        @SuppressLint("NewApi")
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(), PrepareRequestTokenActivity.class);
            startActivity(i);
        }
    });

    noLogin.setOnClickListener(new OnClickListener() {
        /**
         * Proceed to use app without login
         */
        @SuppressLint("NewApi")
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(i);
        }
    });
person Dixit Patel    schedule 25.06.2013
comment
это заставило ошибку уйти. Спасибо! примет, когда позволит. - person user2163853; 25.06.2013

Вероятно, потому что у вас нет контроля с идентификатором R.id.twitterLoginButton, поэтому findViewById возвращает NULL.

Если вы видите этот элемент управления в файле макета, попробуйте выполнить сборку еще раз (меню «Проект», пункт «Очистить файлы сборки»).

person zmbq    schedule 25.06.2013

Убедитесь, что манифест LoginActivity находится на правильном пути с именем пакета или нет.

если это правильно, скопируйте ниже файлы из любого рабочего проекта и замените в своем проекте.

ant.properties
build.xml
proguard-project.txt
project.properties
.classpath
.project
person Sandeep P    schedule 25.06.2013