无法解析 Codepath `Todo App` 教程中的符号 `FileUtils`(Android) [英] Cannot resolve symbol `FileUtils` in Codepath `Todo App` tutorial (Android)

查看:37
本文介绍了无法解析 Codepath `Todo App` 教程中的符号 `FileUtils`(Android)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试遵循 Codepath (https://guides.txt) 中的 Todo 应用教程.codepath.com).

I'm trying to follow a Todo app tutorial from Codepath (https://guides.codepath.com).

来源:https://guides.codepath.com/android/Basic-Todo-App-教程

据我所知,我已经按照教程进行操作,但遇到了以下问题.

As far as I can tell I've followed the tutorial, but am getting the below issue.

Cannot resolve symbol `FileUtils`

MainActivity.Java

package com.codepath.simpletodo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView; 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    private ArrayList<String> items;
    private ArrayAdapter<String> itemsAdapter;
    private ListView lvItems;

    private void readItems() {
        File filesDir = getFilesDir();
        File todoFile = new File(filesDir, "todo.txt");
        try {
            items = new ArrayList<String>(FileUtils.readLines(todoFile));
        } catch (IOException e) {
            items = new ArrayList<String>();
        }
    }

    private void writeItems() {
        File filesDir = getFilesDir();
        File todoFile = new File(filesDir, "todo.txt");
        try {
            FileUtils.writeLines(todoFile, items);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lvItems = (ListView) findViewById(R.id.lvItems);
        items = new ArrayList<String>();
        itemsAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items);
        lvItems.setAdapter(itemsAdapter);
        items.add("Default item");
        items.add("Another default item");
        items.add("The third default item");
        // setup remove listener method call
        setupListViewListener();
    }

    // Attaches a long click listener to the listview
    private void setupListViewListener() {
        lvItems.setOnItemLongClickListener(
                new AdapterView.OnItemLongClickListener() {
                    @Override
                    public boolean onItemLongClick(AdapterView<?> adapter,
                                                   View item, int pos, long id) {
                        // Remove item within array at position
                        items.remove(pos);
                        // Refresh the adapter
                        itemsAdapter.notifyDataSetChanged();
                        // Return true consumes the long click event (marks it handled)
                        return true;
                    }
                });
    }

    public void onAddItem(View v) {
        EditText etNewItem = (EditText) findViewById(R.id.etNewItem);
        String itemText = etNewItem.getText().toString();
        itemsAdapter.add(itemText);
        etNewItem.setText("");
    }
}

activity_mail.xml

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/lvItems"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/btnAddItem" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/etNewItem"
    android:layout_alignTop="@+id/btnAddItem"
    android:hint="Enter a new item"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_toLeftOf="@+id/btnAddItem"
    android:layout_toStartOf="@+id/btnAddItem"
    android:layout_alignParentBottom="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add Item"
    android:id="@+id/btnAddItem"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:onClick="onAddItem"
    />

我对 Android 非常陌生,并且很高兴能够开始工作,因为我还没有足够的背景知识,无法对调试抱有任何希望.

I'm extremely new to Android and would be so happy just to get things to work, as I don't have enough background yet to have any hope at debugging.

任何指导将不胜感激.

app/build.gradle

原始格式

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "com.codepath.simpletodo"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
}

我尝试了包括 'org.apache.commons:commons-io:1.3.2' 的各种组合.

I've tried various combinations of including 'org.apache.commons:commons-io:1.3.2'.

  1. 'com.android.support:appcompat-v7:24.0.0' 替换为 'org.apache.commons:commons-io:1.3.2'
  2. 将两者放在同一行:compile 'com.android.support:appcompat-v7:24.0.0', 'org.apache.commons:commons-io:1.3.2'.
  3. 将两者放在不同的行:compile 'com.android.support:appcompat-v7:24.0.0' compile 'org.apache.commons:commons-io:1.3.2'.
  1. Replacing 'com.android.support:appcompat-v7:24.0.0' with 'org.apache.commons:commons-io:1.3.2'
  2. Putting both on same line: compile 'com.android.support:appcompat-v7:24.0.0', 'org.apache.commons:commons-io:1.3.2'.
  3. Putting both on separate lines: compile 'com.android.support:appcompat-v7:24.0.0' compile 'org.apache.commons:commons-io:1.3.2'.

但是在尝试 Gradle 项目同步 时,出现以下消息失败.

But when attempting the Gradle project sync, there is a failure with below message.

Error:(24, 13) Failed to resolve: compile org.apache.commons:commons-io:1.3.2

更新 2

最终的工作版本需要看起来像这样.

UPDATE 2

The final working version needed to look like this.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile group: 'org.apache.commons', name: 'commons-io', version: '1.3.2'
}

推荐答案

implementation 'org.apache.commons:commons-io:1.3.2' 包含 FileUtils 类.您应该将其添加到您的依赖项中.

implementation 'org.apache.commons:commons-io:1.3.2' contains FileUtils class. You should add this to your dependencies.

这篇关于无法解析 Codepath `Todo App` 教程中的符号 `FileUtils`(Android)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆