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

钟德明 发布于 2013/01/11 22:14
阅读 844
收藏 1
在做新浪微博客户端。

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

发送微博:


嗯,微博发送成功。



然后希望可以知道自己是否有发送成功,我加了一个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(){}是朋友帮我加的,不清楚是不是应该用其它呢?
加载中
0
cqulancer
cqulancer

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

@Override
public void onComplete(String response) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(SinaMessageActivity.this, "微薄分享成功",
            Toast.LENGTH_LONG).show();
        }
    });
}

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

RequestListener 是回调对象...

执行完成会调用 onComplete方法.

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

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

@Override
 public void onComplete(final String result) {
 new X().execute("成功!");
 }
// String 为传进来的参数  // 关于AsyncTask不懂的去搜一搜 基础不扎实啊
class X extends AsyncTask<String, Void, Void> {
		@Override
		protected Void doInBackground(String... params) {
			Toast.makeText(context, params[0], Toast.LENGTH_LONG).show();
			return null;
		}
	}


钟德明
钟德明
嗯,还是不行,你看看这句。 E/AndroidRuntime(13548): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
钟德明
钟德明
嘿嘿,真没学几天,基础相当不扎实,所以遇到很多问题都没有思路去解决,谢谢你,我去试试
0
cqulancer
cqulancer

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

class UpdateListener implements RequestListener{
@Override
public void onComplete(String arg0) {
//Toast.makeText(ShareActivity.this, getResources().getString(R.string.weibo_send_success), Toast.LENGTH_SHORT).show();
System.out.println("Weibo: " + arg0);
new WeiboTask().execute("");
aq.id(R.id.ng_community_layout_status_sina).checked(true);
}


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

0
dodola
dodola

AsyncTask必须在UI线程里创建

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

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

最土的名字
最土的名字
如果Linstener不是在本地activity创建内部类的话 如何将Handler发送给外部的activity?
返回顶部
顶部