首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当getApplicationContext().fileList()

当getApplicationContext().fileList()
EN

Stack Overflow用户
提问于 2016-08-22 01:21:22
回答 1查看 420关注 0票数 1

在我的应用程序中的这个活动中,它将调用geApplication().fileList()列出应用程序文件中的所有文件。

在我的Elephone P8000手机上,我设法创建了新的文件,没有任何错误,但是当我在我的三星手机上尝试它时,这个问题就会弹出。

带有"rList-asia.sumikawa“的文件是我没有创建的文件。

事实上,根据文件末尾的名称"MainActivity“判断,这些是我活动的名称。

我该怎么解决这个问题?

编辑

我的完整Java代码

代码语言:javascript
复制
public class addressActivity extends Activity {

ListView listView;

String[] SavedFiles;

/**
 * Called when the activity is first created.
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_address);

    listView = (ListView) findViewById(R.id.listView);

    addData();
    editData();
    ShowSavedFiles();
    editContent();
    setMultiDelete();
    listView.setOnItemClickListener(getURLOnItemClickListener);
}

void ShowSavedFiles() {
    //SavedFiles = getApplicationContext().fileList();
    //SavedFiles = getApplication().fileList();
    SavedFiles = addressActivity.this.fileList();
    ArrayAdapter<String> adapter
            = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            SavedFiles);

    listView.setAdapter(adapter);
    if (adapter.isEmpty()) {
        Toast.makeText(getBaseContext(), "There is no Address !", Toast.LENGTH_LONG).show();
    }
}

OnItemClickListener getURLOnItemClickListener
        = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
                            long id) {
        // TODO Auto-generated method stub
        String clickedFile = (String) parent.getItemAtPosition(position);
        getURL(clickedFile);
    }

};

void getURL(final String file){
    if (clickAble == true){
        FileInputStream fis;
        String content = "";
        try {
            fis = openFileInput(file);
            byte[] input = new byte[fis.available()];
            while (fis.read(input) != -1) {}
            content += new String(input);
            //Toast.makeText(getBaseContext(),content,Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Intent i = new Intent(addressActivity.this, liveActivity.class);
        String strName = content.toString();
        i.putExtra("urlAddress", strName);
        startActivity(i);
    }
}

OnItemClickListener getFileEditContent = new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String clickedFile = (String)parent.getItemAtPosition(position);
        setMultiEdit(clickedFile);
        // change the checkbox state
        CheckedTextView checkedTextView = ((CheckedTextView) view);
        if (checkedTextView.isChecked()) {

            ((CheckedTextView)view).setChecked(true);
            checkedTextView.setChecked(!checkedTextView.isChecked());
            utils.myPosInt.clear();
            utils.myPos.clear();
            utils.myPosTitle.clear();

        } else {
            for(int i=0; i<listView.getChildCount();i++)
            {
                view = listView.getChildAt(i);
                ((CheckedTextView)view).setChecked(false);
            }

            checkedTextView.setChecked(!checkedTextView.isChecked());
            utils.myPosTitle.add(clickedFile);
        }

    }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-22 08:15:53

这是我的密码

Test.xml

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/test_list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

Test.java

代码语言:javascript
复制
public class Test extends AppCompatActivity
{
    @Bind(R.id.test_list)
    ListView listView;
    String[] SavedFiles;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        ButterKnife.bind(this);

        ShowSavedFiles();
    }
    void ShowSavedFiles()
    {
        SavedFiles = getApplicationContext().fileList();
        ArrayAdapter<String> adapter
                = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                SavedFiles);

        listView.setAdapter(adapter);
        if (adapter.isEmpty()) {
            Toast.makeText(getBaseContext(), "There is no Address !", Toast.LENGTH_LONG).show();
        }
    }

}

输出

来自docs的

https://developer.android.com/reference/android/content/Context.html#fileList()

fileList():返回一个字符串数组,命名与此上下文的应用程序包关联的私有文件。

交替

代码语言:javascript
复制
String[] iFileList = YourActivityName.this.fileList();

希望这有帮助..。

更新

试试这个替代解决方案

代码语言:javascript
复制
    String dataDr=getApplicationInfo().dataDir;
    Log.i(TAG,"data dir"+dataDr);

    showDirFile(dataDr);


    void showDirFile(String dirpth)
    {
        String path = dirpth+"/files";
        Log.d("Files", "Path: " + path);
        File f = new File(path);
        File file[] = f.listFiles();
        Log.d("Files", "Size: "+ file.length);

        SavedFiles=new String[file.length];
        for (int i=0; i < file.length; i++)
        {
            Log.d("Files", "FileName:" + file[i].getName());

            SavedFiles[i]=file[i].getName();
        }

        ArrayAdapter<String> adapter
                = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                SavedFiles);

        listView.setAdapter(adapter);


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

https://stackoverflow.com/questions/39070260

复制
相关文章

相似问题

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