当前位置: 首页 > 知识库问答 >
问题:

上载图像中的未知错误:类从asynchttpResponsehandler派生的匿名类必须声明为抽象

巫马刚洁
2023-03-14

我是一个新手,如果可能的话,请看下面的代码,我不明白我的程序试图上传一个文件到服务器的问题。但在这部分代码中有一个我无法理解的错误

package com.ehhg.upap1;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
 import android.net.Uri;
import android.os.Build;
import android.preference.PreferenceActivity;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.text.PrecomputedTextCompat;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.text.PrecomputedText;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.Toast;
 import android.Manifest;
 import com.loopj.android.http.AsyncHttpClient;
 import com.loopj.android.http.AsyncHttpRequest;
 import com.loopj.android.http.*;
 import com.loopj.android.http.RequestParams;
 import com.squareup.picasso.Picasso;
 import org.json.JSONException;
 import org.json.JSONObject;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.nio.file.FileSystemNotFoundException;
 import java.security.acl.Permission;
 import java.util.jar.Manifest.*;
 import cz.msebera.android.httpclient.entity.mime.Header;


public void uploadImage(File file) {
    AsyncHttpClient myClient = new AsyncHttpClient();

    RequestParams params = new RequestParams();
    try {
        params.put("file", file);
    } catch (FileNotFoundException e) {
    }
    myClient.post(url + "android/upload.php", params, new AsyncHttpResponseHandler() {

      @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            try {
                JSONObject jsonObject = new JSONObject(new String(responseBody));
                if (jsonObject.getString("status").equals("success")) {
                    Picasso.with(getBaseContext())
                            .load(url + "android/uploads/" + jsonObject.getString("filename"))
                            .into(img);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }


        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            Toast.makeText(getBaseContext(), new String(responseBody), Toast.LENGTH_LONG).show();
        }
    });
}

共有1个答案

浦泳
2023-03-14

错误表示AsynchTtPresponseHandler必须实现OnSuccess函数。

编辑:检查您的“按其他用户的注释导入”后,您导入了错误的头类。您需要导入cz.msebera.android.httpclient.header而不是cz.msebera.android.httpclient.entity.mime.header类。

查看下面的代码了解情况

myClient.post(url + "android/upload.php", params, new AsyncHttpResponseHandler() {

    // following line is uncommented
    @Override
    public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) {
        try {
            JSONObject jsonObject = new JSONObject(new String(responseBody));
            if (jsonObject.getString("status").equals("success")) {
                Picasso.with(getBaseContext())
                        .load(url + "android/uploads/" + jsonObject.getString("filename"))
                        .into(img);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }


    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        Toast.makeText(getBaseContext(), new String(responseBody), Toast.LENGTH_LONG).show();
    }
});

希望有帮助。

 类似资料:
  • 问题内容: 这是我的代码,假设可以在按下按钮时更改一些文本:- 用下划线标记,它给我一个错误“类必须声明为抽象或实现抽象方法”。该代码大部分是从互联网上复制的,并且可以正常工作。可能仅是Android Studio错误。我如何使它工作? 问题答案: 必须实现该函数,否则您的类应该是抽象的,以便可以在某些子类中实现您的函数。但是在您的情况下,您犯了一个拼写错误。应该代替;

  • 我收到这个错误: ORA-06550:第1行,第25列:PLS-00302:必须声明组件PA\u EXCEPTION\u LIST\u更新:第1行,第7列:PL/SQL:忽略语句。 我不知道我做错了什么。

  • 问题内容: 为什么不将类声明为抽象类? 为了使Object有用,肯定需要增加状态或行为,Object类是一个抽象,因此应该将其声明为abstract … 为什么他们选择不这样做? 问题答案: 安德,我认为您正在以不必要的抽象程度接近此目标(双关不是故意的)。我认为这种(IMHO)不必要的抽象级别是造成此处“问题”的原因。也许您是从数学理论方法来解决这个问题的,而我们中的许多人都是从“试图解决问题的

  • 我正在开发一个简单的 C 程序,并且很难理解我遇到的编译器错误。该问题是由于我尝试从基类创建派生类引起的。我在下面发布了具有相同结构的代码,但更改了名称。 BaseClass.h DerivedClass.h 派生类.cpp 在尝试编译此代码时,所有虚拟方法都会出现以下错误: 一旦我在“衍生类”中声明了这些方法,错误就会消失,因为编译器现在知道这些方法了。 然而,我很困惑。为什么有必要重新声明派生

  • 问题内容: 为什么即使该类中没有抽象方法,也将类声明为抽象? 问题答案: 这是因为它遵循模板方法设计模式。这些方法具有返回HTTP 405 未实现方法 错误的所有默认行为。如果所有这些方法都是抽象的,那么即使您的业务需求根本不需要它们,也将不得不覆盖所有这些方法。这只会导致样板代码和不确定/不直观的行为。

  • 问题内容: 运行以下查询时出现该错误: 我知道我需要添加别名,但是我不确定在哪里 问题答案: 您需要为子查询添加别名,并且需要将条件应用于您合并的两个查询: 或返回数据,以便您可以在外部查询中应用条件: