我正在使用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);
解决方法
我认为你误解了actionCallback的目的.从TweetTimelineListAdapter的源代码中,您可以看到此回调是针对tweet视图上的操作,例如,当您单击“收藏夹”图标时.我用最喜欢的图标进行测试,然后调用回调.
/** * 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的“下一步”方法.
看一看
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()); } });