首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android中的ContextWrapper和AssetManager错误

Android中的ContextWrapper和AssetManager错误
EN

Stack Overflow用户
提问于 2021-05-20 16:47:19
回答 1查看 170关注 0票数 0

我试图在Android中创建一个Android应用程序,使用Java将数据从CSV文件导入到SQLite数据库。问题是,当我试图使用代码从CSV文件中读取时:

第一次尝试:

代码语言:javascript
运行
复制
import android.os.Build;
import androidx.annotation.RequiresApi;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;

@RequiresApi(api = Build.VERSION_CODES.O)
public class LocalFileParser extends ActivityHome {
  final static Path PATH = Paths.get("src\\main\\res\\raw\\recipescsv.csv");
  File file = new File(String.valueOf(PATH));
  BufferedReader buffer;
  String line ="";
  String [] str;

    public LocalFileParser() throws IOException {
          try {
              InputStream inputStream = getResources().openRawResource(R.raw.recipescsv);
              BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
              reader.readLine();
              while ((line = reader.readLine()) != null) {
                  str = line.trim().split(",");
              }
          } catch (IOException e) {
              e.printStackTrace();
          }
          parseToDb();
    }

  private void parseToDb() {
      for(int i=0; i< str.length; i++) {
        System.out.println("This is the array of file: "+str[i]); //For testing

        Database db = new Database(getApplicationContext());
        int id = Integer.parseInt(str[0]), execTime = Integer.parseInt(str[9]), difRate= Integer.parseInt(str[10]);
        double calories = Double.parseDouble(str[6]);
        db.writeJSONtoTheDB(id,str[1],str[2],str[3],str[4],str[5],calories,str[7],null,execTime,difRate);
      }
    }
}

此尝试的错误如下(在ContextWrapper.java中):

第二次尝试:

代码语言:javascript
运行
复制
import android.content.Context;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class LocalFileParser extends ActivityHome {
        Context context;
        String fileName;
        List<String[]> rows = new ArrayList<>();

    public LocalFileParser(Context context, String fileName) {
        this.context = context;
        this.fileName = fileName;
    }

    public List<String[]> readCSV() throws IOException {
        InputStream is = context.getAssets().open(fileName);
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String line;
        String csvSplitBy = ",";

        br.readLine();

        while ((line = br.readLine()) != null) {
            String[] row = line.split(csvSplitBy);
            rows.add(row);
        }
        return rows;
    }
}

此尝试的错误如下(在AssetManager.java中):

项目的依赖项(build.gradle(:app)):

代码语言:javascript
运行
复制
dependencies {
    implementation 'com.opencsv:opencsv:4.6'
    implementation 'com.android.support:support-annotations:28.0.0'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final'
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'androidx.navigation:navigation-fragment:2.3.5'
    implementation 'androidx.navigation:navigation-ui:2.3.5'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.13.2'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
    testImplementation 'org.junit.jupiter:junit-jupiter'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'com.squareup.okhttp:okhttp:2.5.0'
    implementation 'com.intellij:annotations:12.0@jar'
    implementation 'androidx.recyclerview:recyclerview:1.2.0'
    implementation 'de.hdodenhof:circleimageview:3.1.0'
    implementation 'androidx.cardview:cardview:1.0.0'
}

Android无法解析某些导入(例如:Cannot resolve symbol 'AttrRes'),而对于另一些导入,它显示了以下消息'android.annotation.NonNull' is not public in 'android.annotation'. Cannot be accessed from outside package

谢谢:)!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-22 08:30:17

您可以浏览平台类,如AssetManagerContextWrapper,以供参考,但它们不能使用公共SDK构建,而且这些错误都是正常的。对于应用程序开发,您不需要构建它们,它们是由SDK和Android平台提供的。

在您发布的代码中有一些问题--如果需要帮助,请详细说明您需要帮助的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67624700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档