Autore Topic: Problema con dialog per editor di testo  (Letto 286 volte)

Offline Dandroid95

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Wiko Rainbow
  • Sistema operativo:
    Android
Problema con dialog per editor di testo
« il: 08 Agosto 2016, 10:06:47 CEST »
0
Salve ragazzi, mi era venuta l'idea di progettare un editor di testo dove c'è un EditText su cui scrivere il testo e due Button:  uno per salvare su SD e l'altro per pulire l'EditText, c'è inoltre una dialog che si dovrebbe aprire nel momento che si fa click sul tasto per salvare su SD, dove ci viene chiesto il nome con cui salvare il File. La dialog dovrà quindi possedere un EditText e due Button (salva e annulla), e qui sorge il problema, infatti l'app non parte (nonostante il controllo di sintassi non segni errore) quando  aggiungo un Button al file xml della custom dialog.
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
        >
   
        <Button
                android:id="@+id/exportbtn2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:text="Save"
                />
 
</LinearLayout>
Codice (Javascript): [Seleziona]
public class MainActivity extends Activity {
       
    EditText ed;
       
    Button btn;
       
       
        Button btn2;
        TextView result;
       
    String h;
       
       
       
       
        @Override
       
    protected void onCreate(Bundle savedInstanceState) {
               
        super.onCreate(savedInstanceState);
               
        setContentView(R.layout.main); // inserisce contenuti nel main
                setContentView(R.layout.main2); // inserisce contenuti nel main2
                final Dialog d=new Dialog(this);
                d.setTitle("Prova");
                d.setCancelable(false);
                d.setContentView(R.layout.main2);
       
               
                ed = (EditText) findViewById(R.id.contenttxt);

                result = (TextView) findViewById(R.id.resulttxt);

                btn = (Button) findViewById(R.id.exportbtn);
               
                btn2= (Button) d.findViewById(R.id.exportbtn2);
               
                btn2.setOnClickListener(new View.OnClickListener(){
                                @Override

                                public void onClick(View v) {

                                        try {

                                               
                                                // this will create a new name everytime and unique

                                                File root = new File(Environment.getExternalStorageDirectory(), "Notes");

                                                // if external memory exists and folder with name Notes

                                                if (!root.exists()) {

                                                        root.mkdirs(); // this will create folder.

                                                }

                                                File filepath = new File(root, h + ".txt");  // file path to save

                                                FileWriter writer = new FileWriter(filepath);

                                                writer.append(ed.getText().toString());

                                                writer.flush();

                                                writer.close();

                                                Toast.makeText(getApplicationContext(), "File generated", Toast.LENGTH_SHORT).show();



                                        } catch (IOException e) {

                                                e.printStackTrace();

                                                result.setText(e.getMessage().toString());

                                        }



                                }

                        });
               
               
        btn.setOnClickListener(new View.OnClickListener(){
                               

                               
                                @Override
                               
                                public void onClick(View v) {
                                       
                                        d.show();
                                }
                               
                               
                });
                       
        }
        public void clear(View v){
                ed.getText().clear();
        }
       
       
}
« Ultima modifica: 09 Agosto 2016, 20:33:24 CEST da Dandroid95 »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 582
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Problema con dialog per editor di testo
« Risposta #1 il: 08 Agosto 2016, 12:37:15 CEST »
0
Cosa dice il log di compilazione?
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Dandroid95

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Wiko Rainbow
  • Sistema operativo:
    Android
Re:Problema con dialog per editor di testo
« Risposta #2 il: 08 Agosto 2016, 15:14:23 CEST »
0
Uso l'applicazione aide per programmare, non compare il log di compilazione

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 582
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Problema con dialog per editor di testo
« Risposta #3 il: 08 Agosto 2016, 15:30:03 CEST »
0
Good grief...

Non so da che parte iniziare. Sicuramente è sbagliato assegnare due layout differenti nella onCreate:

Codice (Java): [Seleziona]
setContentView(R.layout.main); // inserisce contenuti nel main
setContentView(R.layout.main2); // inserisce contenuti nel main2

decidi quale dei due utilizzare e fai le modifiche a quello.

L'approccio al dialog è completamente errato. Ti consiglio di leggere la guida ufficiale: https://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Dandroid95

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Wiko Rainbow
  • Sistema operativo:
    Android
Re:Problema con dialog per editor di testo
« Risposta #4 il: 08 Agosto 2016, 15:44:14 CEST »
0
Conviene creare una classe apparte per la dialog, quindi?
Grazie per l'aiuto

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 582
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Problema con dialog per editor di testo
« Risposta #5 il: 08 Agosto 2016, 15:46:49 CEST »
0
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Dandroid95

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Wiko Rainbow
  • Sistema operativo:
    Android
Re:Problema con dialog per editor di testo
« Risposta #6 il: 09 Agosto 2016, 20:30:30 CEST »
0
Ecco i codici rispettivamente della mainActivity e del main funzionanti:
Codice (mainActivity): [Seleziona]
public class MainActivity extends Activity {
        EditText ed;
        Button btn;
        Button btn2;
    TextView result;
        String h;
    EditText Name_File;
        private AlertDialog createDialog()
        {
                Name_File = new EditText(this);
                return new AlertDialog.Builder(this)
                .setView(Name_File) // inserisce un EditText nell'AlertDialog
                    .setPositiveButton(R.string.Ok, new DialogInterface.OnClickListener() // pulsante ok
                        {
                                @Override
                                public void onClick(DialogInterface dialog, int which)
                                {
                                        try {

                                                h=Name_File.getText().toString(); // il nome che vogliamo dare al file
                        File root = new File(Environment.getExternalStorageDirectory(), "Notes");
                                                // se esiste la cartella Notes ok altrimenti...
                                                if (!root.exists()) {
                                                        root.mkdirs(); // per creare il percorso
                                                }
                        File filepath = new File(root, h + ".txt");  // file path per salvare
                                                FileWriter writer = new FileWriter(filepath);
                                                writer.append(ed.getText().toString()); // inserisce il testo nel file
                        writer.flush();
                        writer.close();
                                                // Compare un messaggio di conferma
                        Toast.makeText(getApplicationContext(), "File generated", Toast.LENGTH_SHORT).show();
                                    } catch (IOException e) {
                        e.printStackTrace();
                                                result.setText(e.getMessage().toString());
                                        }
                 }
                        })
                        .setNegativeButton(R.string.Annulla, new DialogInterface.OnClickListener() // pulsante annulla
                        {
                                @Override
                                public void onClick(DialogInterface dialog, int which) // se cliccato
                                {
                                        createDialog().cancel(); // fa scomparire l'AlertDialog
                                        }
                        }).create();
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main); // inserisce contenuti del main
                ed = (EditText) findViewById(R.id.contenttxt);
                result = (TextView) findViewById(R.id.resulttxt);
                btn = (Button) findViewById(R.id.exportbtn);
                btn2=(Button)findViewById(R.id.exportbtn);
                btn.setOnClickListener(new View.OnClickListener(){
                        @Override
                        public void onClick(View v) {
                                createDialog().show(); // mostra l'AlertDialog
                        }
                });
                btn2.setOnClickListener(new View.OnClickListener(){
                                @Override
                                public void onClick(View v) {
                                        ed.getText().clear(); // pulisce l'EditText
                                }
                });
        }
}

Codice (main): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       
    xmlns:tools="http://schemas.android.com/tools"
       
    android:layout_width="match_parent"
       
    android:layout_height="match_parent"
       
    android:background="#ffffff"
       
    android:orientation="vertical" >
       
    <TextView
               
        android:layout_width="wrap_content"
               
        android:layout_height="wrap_content"
               
        android:layout_gravity="center"
               
        android:layout_marginTop="10dp"
               
        android:text="My Editor .txt"
               
        android:textColor="#FF8866"
               
        android:textSize="25sp"
               
        android:textStyle="bold"
               
        android:typeface="monospace" />
       

       
    <EditText
               
        android:id="@+id/contenttxt"
               
        android:layout_width="match_parent"
               
        android:layout_height="300dp"
               
        android:layout_gravity="center"
               
        android:layout_marginBottom="10dp"
               
        android:layout_marginLeft="10dp"
               
        android:layout_marginRight="10dp"
       
        android:background="#ffffff"
               
        android:textColor="#000000"
               
        android:layout_marginTop="10dp"
               
        android:gravity="top|left"
               
        android:scrollHorizontally="false"
               
        android:singleLine="false"
               
        />
       

       
    <Button
               
        android:id="@+id/exportbtn"
               
        android:layout_width="wrap_content"
               
        android:layout_height="wrap_content"
               
        android:layout_gravity="center"
               
        android:layout_marginTop="10dp"
               
        android:background="#FF6644"
               
        android:gravity="center"
               
        android:paddingBottom="10dp"
               
        android:paddingLeft="10dp"
               
        android:paddingRight="10dp"
               
        android:paddingTop="10dp"
               
        android:text="Save to SDCard"
               
        android:textColor="#FFFFFF"
               
        android:textSize="20sp" />
        <Button
               
                android:id="@+id/exportbtn2"
               
        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:layout_marginTop="10dp"

        android:background="#FF6644"

        android:gravity="center"

        android:paddingBottom="10dp"

        android:paddingLeft="10dp"

        android:paddingRight="10dp"

        android:paddingTop="10dp"

        android:text="Clear"

        android:textColor="#FFFFFF"

        android:textSize="20sp" />
       
    <TextView
               
        android:id="@+id/resulttxt"
               
        android:layout_width="wrap_content"
               
        android:layout_height="wrap_content"
               
        android:layout_gravity="center"
               
        android:layout_marginTop="10dp"
               
        android:text=""
               
        android:textColor="#ffffff"
               
        android:textSize="20sp"
               
        android:textStyle="bold"
               
        android:typeface="monospace" />
       
</LinearLayout>