Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android的AsyncTask中保存变量_Android_Android Asynctask_Twitter4j - Fatal编程技术网

如何在Android的AsyncTask中保存变量

如何在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

我使用Twitter 4j在一个按钮上发布推文。如果用户撤销对我的应用程序的访问,那么它在后台的Logcat中显示错误,我希望出现此错误,如果出现此错误,则twitter授权应用程序的另一个隐藏按钮可见。我该怎么做请帮忙。我需要这个错误,如果它存在,我想隐藏显示我的按钮

 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