Autore Topic: Aprire intent File dialog in libreria esterna.  (Letto 708 volte)

Offline Franz78

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Aprire intent File dialog in libreria esterna.
« il: 20 Febbraio 2013, 12:14:41 CET »
0
Ciao a tutti, premetto che sono nuovo dello sviluppo su android, quindi magari se questa non è la sezione adatta prego i moderatori di spostare il topic.
Sto sviluppando un piccolo progetto che prevede la scelta di un file dall'sdcard. Ho trovato questa soluzione in rete per il file dialog:

http://code.google.com/p/android-file-dialog/ ho seguito tutti i passi necessari,
utilizzando eclipse
1) ho incluso la libreria come .jar esterno, (compilandola prima mettendo il ckeck sul tab android "isLibrary" e poi copiandola dentro libs.)
2) nel manifest ho dichiarato l'attivita in questo modo <activity android:name="com.myapp.eu.filedialog.FileDialog"></activity>
3) e poi ho seguito il tutorial indicato nell'url, per aprire il dialog nella mia activity principale ho scritto questo:

Codice: [Seleziona]
@Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                Button _btnCreateAsset = (Button) findViewById(R.id.btnCreateAsset);
                _btnCreateAsset.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                Intent intent = new Intent(getBaseContext(), FileDialog.class);
                                intent.putExtra(FileDialog.START_PATH, "/sdcard");
                               
                                // l'utente puo selezionare solo i file.
                                intent.putExtra(FileDialog.CAN_SELECT_DIR, false);
                                intent.putExtra(FileDialog.SELECTION_MODE, SelectionMode.MODE_OPEN);

                                // alternatively you can set file filter
                                // intent.putExtra(FileDialog.FORMAT_FILTER, new String[] {
                                // "png" });

                                startActivityForResult(intent, REQUEST_SAVE);
                        }
                });
        }


il problema è che, quando clicco sul pulsante l'applicazione si chiude ed il log di logcat mi da questo :

02-20 12:09:37.712: E/AndroidRuntime(1134): FATAL EXCEPTION: main
02-20 12:09:37.712: E/AndroidRuntime(1134): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.eu.mediaupload/com.myapp.eu.filedialog.FileDialog}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'



Sono andato a vedere nell'xml della libreria che ho incluso e una lista id.list è presente:

Codice (XML): [Seleziona]
   
 <ListView
           android:id="@android:id/list"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent" />


Quindi....cosa sbaglio?
suggerimenti ? c'è qualcosa che dovrei fare ?
Grazie anticipatamente  a tutti per le cortesi risposte.









Offline lillogoal

  • Utente normale
  • ***
  • Post: 167
  • Respect: +4
    • Google+
    • lillosogliani
    • Mostra profilo
    • LilloNet
  • Dispositivo Android:
    Galaxy s3, Nexus 7,galaxy s advance,galaxy scl
  • Play Store ID:
    Lillonet Inc.
  • Sistema operativo:
    Windows 8,7 & Kali-Linux
Re:Aprire intent File dialog in libreria esterna.
« Risposta #1 il: 19 Settembre 2013, 21:15:28 CEST »
0
Chi non progetta la sicurezza , programma il fallimento! K.M

Offline elfo83

  • Utente normale
  • ***
  • Post: 287
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Aprire intent File dialog in libreria esterna.
« Risposta #2 il: 19 Settembre 2013, 23:24:08 CEST »
0
Non conosco la classe che stai usando ma quell'errore ma se nel file xml hai
Codice (XML): [Seleziona]
android:id="@android:id/list" e presuppongo che la classe che stai usando estende ListActivity. Quindi se la classe non estende ListActivity cambia l'id della tua lista. Metti ad esempio android:id="@+id/tualista" e prendi il controllo della lista con findViewById(..). Se invece la tua classe estende ListActivity, usa come id della lista quello predefinito da android, cioè android:id="@android:id/list". In questo caso per prendere il controllo della lista non utilizzare findViewByid(...) ma usa il metodo getListView().