Pregunta

En mi aplicación, me ha creado una carpeta y escribió archivos de texto en él.Ahora, tengo que mostrarlos.El siguiente es el código de Java, donde el principal comienza la operación.

private class OpenFileEvent implements OnClickListener
    {

        @Override
        public void onClick(View arg0) {

            LinearLayout openFileDialogView = (LinearLayout)findViewById(R.id.open_file_dialog);

            // TODO Auto-generated method stub
            final Dialog openFileDialog = new Dialog(Notes.this);
            openFileDialog.setTitle("Open File");
            openFileDialog.setContentView(R.layout.open_dialog);


            //First, list all the available Files
            File folder = new File(Environment.getExternalStorageDirectory()+"/Main Notes/Notes/");
            File file = new File(folder.getAbsolutePath());

            File[] fileNameList = file.listFiles();

            try
            {
            if(fileNameList != null && fileNameList.length>0)
            {
                for(int i=0;i<fileNameList.length;i++)
                {
                    //Get the sub views first
                    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                    View openThisFileView = inflater.inflate(R.layout.open_dialog_file, null);      
                    Button openThisFileButton = (Button)openThisFileView.findViewById(R.id.open_this_file_button);
                    Button appendThisFileButton = (Button)openThisFileView.findViewById(R.id.append_note_this_file);
                    TextView openThisFileNameTxt = (TextView)openThisFileView.findViewById(R.id.open_this_file_name);

                    //Set the Text
                    openThisFileNameTxt.setText(fileNameList[i].getName());

                    //Set the Listeners


                    //Add the View
                    openFileDialogView.addView(openThisFileView);

                }
            }
            }
            catch(Exception e)
            {
                Toast.makeText(VoiceNotes.this, "The Error is: "+e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }

            //Show the Dialog
            openFileDialog.show();




        }

    }

Aquí, el try..catch es necesario para ejecutar en el dispositivo.Sin ella, la aplicación simplemente se bloquea.Emulador no lo necesita.En el dispositivo real, es el mensaje de error The Error is: null.No hay problemas en el emulador.

El cuadro de diálogo anterior se crea con la ayuda de otro diseño.Aquí está.

open_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/open_file_dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="#ffffff">


</LinearLayout>

Como se puede ver en el código de Java, el espacio en el open_dialog.xml es llenada por otro punto de vista, que representan el nombre de archivo y 2 botones.Es uno de los que se activan por Aquí está.

open_dialog_file.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/open_dialog_file_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/open_this_file_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:padding="5dp"
        android:text="TextView" />

    <Button
        android:id="@+id/append_note_this_file"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/open_this_file_button"
        android:text="@string/append_note" />

    <Button
        android:id="@+id/open_this_file_button"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="@string/open" />


    </RelativeLayout>

Así que mi pregunta es, ¿por qué esto no funciona en el dispositivo real?Antes de publicar este código que he probado si la carpeta de este código se busca es existió o no, y como supuse, es existente.

En el dispositivo real, cuando uso el try catch, el diálogo con sólo el título de obtener la muestra.Pero el diálogo está vacía.Aparte de eso, la única salida es la Toast mensaje.

Entonces, ¿cuál es el problema aquí?

¿Fue útil?

Solución

El problema no es con IO.Es con diseño de inflar.En el Emulador no vienen porque no hay datos para ser mostrados, por lo que no inflar.He encontrado el problema es con LayoutInflater o algo relacionado a eso, porque me las arreglé para obtener la lista de carpetas y mostrarlo en un Brindis sin mostrar en ningún punto de vista externo.

Otros consejos

¿Pusiste el permiso WRITE_EXTERNAL_STORAGE en AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top