2011-09-26 9 views
4

가져온 패키지에서 메소드를 호출하려고하는 주요 활동이 있습니다. 아래에 전화와 방법을 게시했습니다. 내가 얻는 오류 메시지는 그 줄입니다.setContentView가 Null 포인터 예외를 발생시킵니다.

setContentView (twitterSite);

널 포인트 예외가 발생했습니다. 방법

public void loginNewUser(View v, Context context) { 
    mPrefs = context.getSharedPreferences("twitterPrefs", MODE_PRIVATE); 
    Log.i(TAG, "Got Preferences"); 

    // Load the twitter4j helper 
    mTwitter = new TwitterFactory().getInstance(); 
    Log.i(TAG, "Got Twitter4j"); 

    // Tell twitter4j that we want to use it with our app 
    mTwitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 

    try { 
     Log.i(TAG, "Request App Authentication"); 
     mReqToken = mTwitter.getOAuthRequestToken(CALLBACK_URL); 

     Log.i(TAG, "Starting Webview to login to twitter"); 
     WebView twitterSite = new WebView(context); 
     twitterSite.requestFocus(View.FOCUS_DOWN); 
     twitterSite.setOnTouchListener(new View.OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
        case MotionEvent.ACTION_UP: 
         if (!v.hasFocus()) { 
          v.requestFocus(); 
         } 
         break; 
       } 
       return false; 
      } 
     }); 
     twitterSite.loadUrl(mReqToken.getAuthenticationURL()); 
     setContentView(twitterSite); 

    } catch (TwitterException e) { 
     Log.e("HelloWorld", "Error in activity", e); 
     Toast.makeText(this, "Twitter Login error, try again later", Toast.LENGTH_SHORT).show(); 
    } 
} 

스택 트레이스

09-26 08:21:12.123: ERROR/AndroidRuntime(171): Uncaught handler: thread main exiting due to uncaught exception 
09-26 08:21:12.312: ERROR/AndroidRuntime(171): java.lang.NullPointerException 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.app.Activity.setContentView(Activity.java:1631) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.blundell.tut.ttt.TweetToTwitterActivity.loginNewUser(TweetToTwitterActivity.java:184) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.reason.max.Reason$3.onClick(Reason.java:239) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.View.performClick(View.java:2344) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.View.onTouchEvent(View.java:4133) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.widget.TextView.onTouchEvent(TextView.java:6510) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.View.dispatchTouchEvent(View.java:3672) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.app.Dialog.dispatchTouchEvent(Dialog.java:609) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.os.Looper.loop(Looper.java:123) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
09-26 08:21:12.312: ERROR/AndroidRuntime(171):  at dalvik.system.NativeStart.main(Native Method) 
+0

은 ((액티비티) 컨텍스트) .setContentView (twitterSite)를 사용하려고해야하며 –

+0

이 문제를 정렬 해 주셔서 감사합니다. 당신이 대답으로 대답한다면 나는 그것을 받아 들일 것입니다. 왜 이것이 효과가 있었는지 조금 더 설명해 주시겠습니까? – Somk

답변

7

setContentView

  TweetToTwitterActivity twitter = new TweetToTwitterActivity(); 
      twitter.loginNewUser(v, context); 

Activity 클래스하는 방법이다. 그래서 함수가 액티비티 클래스에 없다면 당신은 컨텐트를 설정해야하는 액티비티를 언급해야한다.

((Activity) context).setContentView(twitterSite); 

이유가 있기 때문에 Activity에 컨텍스트를 입력해야합니다.

+0

이것은 내 문제에 완벽했다. 내가 겪어 본 많은 답변 중 하나가 맞았다! 감사! 나는 애플 리케이션의 시작 부분에 사용할 스킨을 선택해야하는 문제가 있었고 일단 환경 설정에 저장하면 즉시 스킨을 설정해야했습니다. 그것은 프래그먼트 홀더 주변의 레이아웃이었고, MyActivity에서 만든 메소드를 setContentView로 호출하고 효과적으로 앱 레이아웃을 새로 고침하는 트릭입니다. –

0

onCreate() 방법 UR 첫번째 라인

super.onCreate(savedInstanceState); 
관련 문제