【问题标题】:Twitter Android SDK not executing CallbackTwitter Android SDK 未执行回调
【发布时间】:2018-02-07 22:34:37
【问题描述】:

我正在使用 Twitter 句柄运行此代码,我很确定它不存在,以便测试错误处理。 Callback 上的断点永远不会被命中,无论是成功还是失败。

任何关于这是为什么的指针?

请注意,此代码适用于有效的 Twitter 句柄,但也不会调用回调。

final Callback<Tweet> actionCallback = new Callback<Tweet>() {
    @Override
    public void success(Result<Tweet> result) {
        int x = 1;
        x++; // This code is just so I can put a breakpoint here
    }
    @Override
    public void failure(TwitterException exception) {
        DialogManager.showOkDialog(context, R.string.twitter_feed_not_found);
    }
};

final UserTimeline userTimeline = new UserTimeline.Builder().screenName(handleStr + "dfdfddfdfdfasdf") // Handle that doesn't exist
        .includeReplies(false).includeRetweets(false).maxItemsPerRequest(5).build();

final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter.Builder(context)
        .setTimeline(userTimeline)
        .setViewStyle(R.style.tw__TweetLightWithActionsStyle)
        .setOnActionCallback(actionCallback)
        .build();

listView.setAdapter(adapter);

【问题讨论】:

    标签: java android twitter callback android-adapter


    【解决方案1】:

    我认为您误解了 actionCallback 的目的。从 TweetTimelineListAdapter 的源代码中可以看出,这个回调是针对推文视图上的操作,例如,当您单击收藏图标时。我用最喜欢的图标进行了测试,回调被调用了。

    在源码的getView方法处看这条评论。

       /**
         * Returns a CompactTweetView by default. May be overridden to provide another view for the
         * Tweet item. If Tweet actions are enabled, be sure to call setOnActionCallback(actionCallback)
         * on each new subclass of BaseTweetView to ensure proper success and failure handling
         * for Tweet actions (favorite, unfavorite).
         */
    

    回调并非旨在处理不存在的屏幕名称以及特定推文的操作/按钮。

    希望这会有所帮助。

    更新:您不需要检测 UserTimeLine 上的任何错误,因为构建器不会引发任何异常并且适配器将为空,屏幕上不会显示任何行/视图。但是,如果您仍然需要在加载中检测到一些“错误”,则必须依赖 UserTimeLine 的“next”方法。

    看看

      userTimeline.next(null, new Callback<TimelineResult<Tweet>>() {
            @Override
            public void success(Result<TimelineResult<Tweet>> result) {
    
            }
    
            @Override
            public void failure(TwitterException exception) {
                Log.d("TAG",exception.getMessage());
            }
        });
    

    此方法显示用户的下一条推文,如果调用失败回调,您将确定该用户没有任何推文或该用户不存在。

    【讨论】:

    • 谢谢!加载UserTimeline 时如何检测错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多