如何在Android的AsyncTask中保存变量
我使用Twitter 4j在一个按钮上发布推文。如果用户撤销对我的应用程序的访问,那么它在后台的Logcat中显示错误,我希望出现此错误,如果出现此错误,则twitter授权应用程序的另一个隐藏按钮可见。我该怎么做请帮忙。我需要这个错误,如果它存在,我想隐藏显示我的按钮如何在Android的AsyncTask中保存变量,android,android-asynctask,twitter4j,Android,Android Asynctask,Twitter4j,我使用Twitter 4j在一个按钮上发布推文。如果用户撤销对我的应用程序的访问,那么它在后台的Logcat中显示错误,我希望出现此错误,如果出现此错误,则twitter授权应用程序的另一个隐藏按钮可见。我该怎么做请帮忙。我需要这个错误,如果它存在,我想隐藏显示我的按钮 class updateTwitterStatus extends AsyncTask<String, String, Void> { @Override protected void onPre
class updateTwitterStatus extends AsyncTask<String, String, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Void doInBackground(String... args) {
String status = args[0];
try {
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(consumerKey);
builder.setOAuthConsumerSecret(consumerSecret);
String access_token = mSharedPreferences.getString(PREF_KEY_OAUTH_TOKEN, "");
String access_token_secret = mSharedPreferences.getString(PREF_KEY_OAUTH_SECRET, "");
AccessToken accessToken = new AccessToken(access_token, access_token_secret);
twitter4j.Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
StatusUpdate statusUpdate = new StatusUpdate(status);
File extStore = Environment.getExternalStoragePublicDirectory("/Twitter/Cache/demo.jpg");
statusUpdate.setMedia(extStore);
twitter4j.Status response = twitter.updateStatus(statusUpdate);
} catch (TwitterException e) {
Log.d("Failed to post!", e.getMessage());
error=e; //error is exception
}
return null;}
@Override
protected void onPostExecute(Void result) {
pDialog.dismiss();
Toast.makeText(getContext(), "Posted to Twitter!"+error, Toast.LENGTH_SHORT).show();
/* i need a variable like int a =10; access it globally, How i do that/*
} } }
类updateWitterStatus扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
受保护的Void doInBackground(字符串…args){
字符串状态=args[0];
试一试{
ConfigurationBuilder=新的ConfigurationBuilder();
builder.setOAuthConsumerKey(consumerKey);
builder.setOAuthConsumerCret(ConsumerCret);
String access_token=mSharedPreferences.getString(PREF_KEY_OAUTH_token,“”);
String access\u token\u secret=mSharedPreferences.getString(PREF\u KEY\u OAUTH\u secret,“”);
AccessToken AccessToken=新的AccessToken(访问令牌、访问令牌、密码);
twitter4j.Twitter=newtwitterFactory(builder.build()).getInstance(accessToken);
StatusUpdate StatusUpdate=新状态更新(状态);
文件extStore=Environment.getExternalStoragePublicDirectory(“/Twitter/Cache/demo.jpg”);
statusUpdate.setMedia(extStore);
twitter4j.Status response=twitter.updateStatus(statusUpdate);
}捕获(twitter异常){
Log.d(“发布失败!”,e.getMessage();
error=e;//错误是异常
}
返回null;}
@凌驾
受保护的void onPostExecute(void结果){
pDialog.disclose();
Toast.makeText(getContext(),“发布到Twitter!”+错误,Toast.LENGTH\u SHORT.show();
/*我需要一个像int a=10这样的变量;全局访问它,我是如何做到的/*
} } }
您可以将异常
保存在变量中,并在onPostExecute
()
并隐藏你的按钮
new AsyncTask<Void, Void, Boolean>() {
Exception error;
@Override
protected Boolean doInBackground(Void... params) {
try {
// do work
return true;
} catch (Exception e) {
error = e;
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
if (result) {
Toast.makeText(ctx, "Success!",
Toast.LENGTH_SHORT).show();
} else {
if (error != null) {
Toast.makeText(getApplicationContext(), error.getMessage(),
Toast.LENGTH_SHORT).show();
//error occurs hide button here
}
}
}
}
newasynctask(){
异常错误;
@凌驾
受保护的布尔doInBackground(Void…params){
试一试{
//工作
返回true;
}捕获(例外e){
误差=e;
返回false;
}
}
@凌驾
受保护的void onPostExecute(布尔结果){
如果(结果){
Toast.makeText(ctx,“成功!”,
吐司。长度(短)。show();
}否则{
if(错误!=null){
Toast.makeText(getApplicationContext(),error.getMessage(),
吐司。长度(短)。show();
//在此处隐藏按钮时出错
}
}
}
}
我需要声明我的同步类摘要,可以吗?我不能将doInBackground(Void…params)设置为Void,因为我需要字符串来更新状态!!!这是一个模板…你也可以使用你的类,只需在最后一个参数中传递布尔值String,String,boolean
!!我正在使用ViewHolder在自定义列表视图中使用tweet,我如何隐藏这些按钮?我可以在if and else条件下使用此标志,还是返回null?我是初学者。你可以使用holder.button\u view.setVisibility(view.GONE);在
onpostExecute`中,通过此方法为(int i=0;i