0

HIアプリ全体でタブを使用してアプリケーションに取り組んでいます.1つの特定のタブが統合されていますfacebookとtwitter.itsfacebookボタンをクリックすると、facebookのログイン画面が表示され、ログインの成功も正常に機能しますが、ログインが完了するとリダイレクトしたいそのための別のアクティビティに、onComplete()で次のコードを使用しました

                   View view = Socialtab.group.getLocalActivityManager()  
                       .startActivity("Items", new Intent(Social.this,MainActivity.class)
                       .putExtra("name", name)
                       .putExtra("email", email)
                       .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))  
                       .getDecorView();
                    Socialtab.group.replaceView(view); 

次の行に例外が表示されています

.startActivity("Items", new Intent(Social.this,MainActivity.class)

そして私のlogcatエラーは次のとおりです:

    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.karmakexpo/com.karmakexpo.MainActivity}: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618)   
at android.app.ActivityThread.startActivityNow(ActivityThread.java:1524)

at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)

at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)    
at com.karmakexpo.Social.jsonParsing(Social.java:353)   
at com.karmakexpo.Social$SampleRequestListener.onComplete(Social.java:258)  
at com.karmakexpo.facebook.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:238)

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

at android.os.Handler.<init>(Handler.java:121)
at android.app.Activity.<init>(Activity.java:698)

at com.karmakexpo.MainActivity.<init>(MainActivity.java:56)

at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1409) at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1610)
... 6 more

私はグーグルで解決策を見つけられませんでした。解決策を教えてください。よろしくお願いします。

4

2 に答える 2

0

メイン UI スレッドでコードを実行する必要があります。

これを試して

Looper.prepare();  // Initialize the current thread as a looper. This gives you a chance to create handlers that then reference this looper, before actually starting the loop. 

 View view = Socialtab.group.getLocalActivityManager()  
               .startActivity("Items", new Intent(Social.this,MainActivity.class)
               .putExtra("name", name)
               .putExtra("email", email)
               .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))  
               .getDecorView();
               Socialtab.group.replaceView(view); 
Looper.loop();
于 2012-10-13T10:55:25.533 に答える
0

runOnUiThread を使用してみてください:

  Social.this.runOnUiThread(new Runnable() {

    @Override
    public void run() {
     // TODO Auto-generated method stub
                    View view = Socialtab.group.getLocalActivityManager()  
               .startActivity("Items", new Intent(Social.this,MainActivity.class)
               .putExtra("name", name)
               .putExtra("email", email)
               .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))  
               .getDecorView();
               Socialtab.group.replaceView(view); 
    }
   });
于 2012-10-13T10:48:08.240 に答える