2013-06-25 1 views
1

У меня есть всплывающая страница, которая открывается, когда мое приложение открыто, а затем оно заменяется LoginActivity, которое дает возможность пользователю войти в Твиттер с приложением. Это OnCreate метод LoginActivity:NullPointerException in onСоздание активности

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() {

I даже не может понять, почему это происходит. Кто-нибудь есть идеи? Logcat ниже:

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, Играть услуг и т.д. Благодарим Вас за помощь!

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> 
+0

Если вы думаете, затмение является виновником после обновления ADT затем [попробовать это] (http://stackoverflow.com/a/16603961/2345913) – CRUSADER

+0

Пожалуйста, укажите activity_login.xml – Dimmerg

+0

activity_login.xml добавлено – user2163853

ответ

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); 
     } 
    }); 
+0

, что привело к ошибке. Спасибо! согласится, когда это позволит мне. – user2163853

+1

Любые объяснения, почему это работает? –

0

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

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

0

Проверьте манифест LoginActivity в правильный путь с имя пакета или нет ..

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

ant.properties 
build.xml 
proguard-project.txt 
project.properties 
.classpath 
.project