2013-04-28 88 views
1

我有一个应用程序使用官方Facebook的SDK下载Facebook相册。最近,我更新了我的代码,以合并新的FB android sdk 3.0。Android活动不显示

我的第一个活动启动FB身份验证,请求朋友列表并将选定好友的图形ID发送到使用意图的第二个活动。

我没有对开始第二个活动的代码做任何更改,但发生了android.view.windowleaked异常。所以我在我的第一个活动的onPause,onStop函数中调用了进度对话框的解除函数。然后错误消失了。

但是第二个活动仍然没有显示出前景。也没有例外。这是我的代码。

album_intent = new Intent(); 
album_intent.putExtra("id",graph_id); 
album_intent.putExtra("name",selected_friend.toString()); 
//album_intent.setComponent(new ComponentName(Barebone_fbActivity.this, album_selector.class)); 
album_intent.setClass(this, album_selector.class); 

album_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
//Context context = getApplicationContext(); 
//context.startActivity(album_intent); 
try 
{ 
    getApplicationContext().startActivity(album_intent); 
} 
catch(ActivityNotFoundException ex) 
{ 
ex.printStackTrace(); 
} 

我为第二个activity的onCreate方法添加了一个toast。令人惊讶的是吐司显示,但活动本身没有显示。我也检查了我的清单文件,并没有做任何改变。我怀疑FB android SDK 3.0,因为它们几乎改变了从登录到图形api请求的所有内容。 请帮忙找到问题。

我的应用程序中的所有活动都实现了StatusCallback。这是album_selector活动的生命周期方法。 StatusCallback的'调用'方法很长,所以不包含它。第二项活动还扩展了ListActivity。

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    //locks the screen in portrait mode 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Toast.makeText(this, "Voila", Toast.LENGTH_SHORT).show(); 
    this.setVisible(true); 

    dialog = ProgressDialog.show(album_selector.this, "", getText(R.string.loading)); 

    //pressing back button dismisses the progress dialog 
    dialog.setCancelable(true); 

    //get friend_name and friend_id from the intent which started this activity 
    Intent starting_intent = getIntent(); 
    friend_id = starting_intent.getStringExtra("id"); 
    friend_name = starting_intent.getStringExtra("name"); 

    lv = getListView(); 

    Session currentSession = Session.getActiveSession(); 
    if(currentSession == null || currentSession.getState().isClosed()) 
    { 
     Session session = Session.openActiveSession(this, true, this); 
     //Session session = Session.restoreSession(this, null, this, bundle); 
     currentSession = session; 
    } 
    if (currentSession != null && !currentSession.isOpened()) 
    { 
     OpenRequest openRequest = new OpenRequest(this).setCallback(this); 
     if(openRequest == null) 
     { 
      openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS); 
      openRequest.setPermissions(Arrays.asList(permissions)); 
      openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); 
      currentSession.openForRead(openRequest); 
     } 
    } 
    dialog.dismiss(); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 

protected void onStop() 
{ 
    super.onPause(); 
    album_selector.this.dialog.dismiss(); 
} 

protected void onPause() 
{ 
    super.onPause(); 
    album_selector.this.dialog.dismiss(); 
} 
+0

您使用的是Facebook SDK 3.0.1吗? – liarspocker 2013-04-28 13:36:59

+0

也许最好是添加更多信息,比如第二个活动代码的重要部分。并指定你的意思是“不显示”..黑屏?有些错误? – 5agado 2013-04-28 14:13:15

+0

@nachodeh是的我正在使用Facebook的SDK 3.0.1。 – 2013-04-28 14:32:00

回答

1

我有一个类似的问题,其中活动加载和运行,但它不可见。

的问题是,在AndroidManifest.xml的活动已经定义为NoDisplay一个主题:

android:theme="@android:style/Theme.NoDisplay" 

删除上述属性从活动使其再次可见。