开发者社区> 问答> 正文

android新浪微博发出后,应该用什么技巧提示用户发送的情况??报错

在做新浪微博客户端。

我的设计是:
点击按钮后,发送微博:

发送微博:


嗯,微博发送成功。



然后希望可以知道自己是否有发送成功,我加了一个Toast,所以变成了这样:


Total并没有显示。软件也报错了。
但是微博还是发送成功的。


1
2
3
4
5
6
7
8
9
01-11 21:44:05.100: W/dalvikvm(4232): threadid=11: thread exiting with uncaught exception (group=0x410ae9d8)
01-11 21:44:05.100: E/AndroidRuntime(4232): FATAL EXCEPTION: Thread-4114
01-11 21:44:05.100: E/AndroidRuntime(4232): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
01-11 21:44:05.100: E/AndroidRuntime(4232):     at android.os.Handler.<init>(Handler.java:121)
01-11 21:44:05.100: E/AndroidRuntime(4232):     at android.widget.Toast$TN.<init>(Toast.java:327)
01-11 21:44:05.100: E/AndroidRuntime(4232):     at android.widget.Toast.<init>(Toast.java:93)
01-11 21:44:05.100: E/AndroidRuntime(4232):     at android.widget.Toast.makeText(Toast.java:235)
01-11 21:44:05.100: E/AndroidRuntime(4232):     at com.weibo.sdk.android.demo.Sent_Activity$1$1.onComplete(Sent_Activity.java:40)
01-11 21:44:05.100: E/AndroidRuntime(4232):     at com.weibo.sdk.android.net.AsyncWeiboRunner$1.run(AsyncWeiboRunner.java:26)


代码错误只想Toast那行。请问是怎么回事?
  或者说各位朋友有更好的方法,可以提示用户微博是否发送成功?
  第四个参数RequestListener(){}是朋友帮我加的,不清楚是不是应该用其它呢?

展开
收起
爱吃鱼的程序员 2020-06-22 22:20:36 422 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    朋友,我找到方法了!织码:

    @Override
    publicvoidonComplete(Stringresponse){
        runOnUiThread(newRunnable(){
            @Override
            publicvoidrun(){
                Toast.makeText(SinaMessageActivity.this,"微薄分享成功",
                Toast.LENGTH_LONG).show();
            }
        });
    }

    朋友,你现在大三?我是大4开始学习的android开发。谢谢你,请问它的原理是另开一个线程吗?UI线程到底是哪个?

    RequestListener是回调对象...

    执行完成会调用onComplete方法.

    你报错是因为在后台线程修改了UI。

    你可以创建一个AsyncTask,然后里面用toas提示就是的。

    @OverridepublicvoidonComplete(finalStringresult){newX().execute("成功!");} //String为传进来的参数//关于AsyncTask不懂的去搜一搜基础不扎实啊 classXextendsAsyncTask<String,Void,Void>{@OverrideprotectedVoiddoInBackground(String...params){Toast.makeText(context,params[0],Toast.LENGTH_LONG).show();returnnull;}}


    嗯,还是不行,你看看这句。E/AndroidRuntime(13548):Causedby:java.lang.RuntimeException:Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()嘿嘿,真没学几天,基础相当不扎实,所以遇到很多问题都没有思路去解决,谢谢你,我去试试

    我试了Task,还是不行~神奇的是

    classUpdateListenerimplementsRequestListener{
    @Override
    publicvoidonComplete(Stringarg0){
    //Toast.makeText(ShareActivity.this,getResources().getString(R.string.weibo_send_success),Toast.LENGTH_SHORT).show();
    System.out.println("Weibo:"+arg0);
    newWeiboTask().execute("");
    aq.id(R.id.ng_community_layout_status_sina).checked(true);
    }


    这个是没问题的我觉得是sdk本身的问题~

    AsyncTask必须在UI线程里创建

    新浪微博的那个complete回调方法执行的时候还是在Thread里

    使用Handler吧,在onComplete的时候发送一个Handler到你自己的Activity

    如果Linstener不是在本地activity创建内部类的话如何将Handler发送给外部的activity?
    2020-06-22 22:20:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载