【问题标题】:Android activity not displayingAndroid活动不显示
【发布时间】:2013-04-28 12:42:20
【问题描述】:

我有一个使用官方 facebook sdk 下载 facebook 相册的应用程序。最近,我更新了我的代码,加入了新的 FB android sdk 3.0。

我的第一个 Activity 启动 FB 身份验证,请求好友列表并使用 Intent 将所选好友的图 ID 发送到第二个 Activity。

我没有对启动第二个活动的代码进行任何更改,但发生了 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();
}

我向第二个活动的 onCreate 方法添加了祝酒词。令人惊讶的是,显示了 toast,但没有显示活动本身。我还检查了我的清单文件并且没有进行任何更改。我怀疑 FB android SDK 3.0 因为他们几乎改变了从登录到图形 api 请求的所有内容。 请帮忙找出问题。

我的应用程序中的所有活动都实现了 StatusCallback。这是album_selector 活动的生命周期方法。 StatusCallback 的 'call' 方法很长,所以不包括在内。第二个活动也扩展了 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();
}

【问题讨论】:

  • 您使用的是 Facebook SDK 3.0.1 吗?
  • 如果您添加更多信息可能会更好,例如第二个活动代码的重要部分。并指定“未显示”的含义..黑屏?有些错误?
  • @nachodeh 是的,我正在使用 Facebook sdk 3.0.1。
  • 我不在这里发布什么代码。调用 startactivity 后,第一个 Activity 仍然在前台,但显示了我之前提到的 toast。
  • @rochasdv 不,我还没用过。我不知道我将代码更改为 startActivityForResult 是否会有所帮助。

标签: android android-activity facebook-android-sdk


【解决方案1】:

我遇到了类似的问题,活动正在加载和运行,但它不可见。

问题在于,在 AndroidManifest.XML 中,活动的主题定义为 NoDisplay:

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

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

【讨论】:

    【解决方案2】:

    查看您想要的子活动是否在您创建的另一个包中。如果是,这就是它无法识别您的活动的原因。将其折射到您的父活动所在的位置。就是它。

    【讨论】:

      【解决方案3】:

      对于未来的用户:如果子布局具有ConstraintLayout 而父布局具有RelativeLayout / LinearLayout,则子布局将不会呈现。 检查是否是您的情况。

      【讨论】:

        【解决方案4】:

        我有同样的问题,原来是自动填充。删除所有自动填充

         android:autofillHints=""
        

        【讨论】:

          【解决方案5】:

          .java 文件和.xml 文件,请尝试为这些文件命名。

          【讨论】:

          • 欢迎来到 SO!目前,很难理解这实际上是如何回答这个问题的。
          • 同样的事情发生在我身上,然后我注意到具有相同名称的 XML 文件和 java 文件的Activity 没有这个问题。在我改名后解决了这个问题的那个。
          猜你喜欢
          • 1970-01-01
          • 2019-05-22
          • 1970-01-01
          • 1970-01-01
          • 2016-03-23
          • 1970-01-01
          • 1970-01-01
          • 2013-03-02
          • 1970-01-01
          相关资源
          最近更新 更多