Autore Topic: Visualizzare alert dialog all'avvio di un'activity  (Letto 1185 volte)

Offline birbantello85

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GALAXY ACE PLUS
  • Play Store ID:
    birbantello85
  • Sistema operativo:
    ANDROID 2.3.6
Visualizzare alert dialog all'avvio di un'activity
« il: 20 Marzo 2013, 20:09:29 CET »
0
Salve a tutti!
è possibile visualizzare un alertdialog con checkbox "NON VISUALIZZARE IN FUTURO" all'avvio di un'activity? Ho provato inserire l'alertdialog nel metodo onCreate, ma l'app crasha...chi di voi mi puo' illuminare?
Grazie in anticipo.
Giancarlo.
« Ultima modifica: 20 Marzo 2013, 20:38:28 CET da Ricky`, Reason: non serve scrivere il titolo in maiuscolo »

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #1 il: 20 Marzo 2013, 21:21:54 CET »
0
Posta il LogCat del crash

Offline birbantello85

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GALAXY ACE PLUS
  • Play Store ID:
    birbantello85
  • Sistema operativo:
    ANDROID 2.3.6
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #2 il: 20 Marzo 2013, 21:38:29 CET »
0
Posta il LogCat del crash

Purtroppo non ho il logcat in quanto provo direttamente l'app nel dispositivo.
Comunque ho provato ad inserirlo anche nel metodo onStart() ma il risultato non cambia. L'app crasha sempre.
Qui vi posto il codice della mia Activity:

Codice (Java): [Seleziona]
package com.giancarlo.gruppolevoci;

import android.app.ActionBar;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;

import com.giancarlo.gruppolevoci.RSSFeed;

public class DetailActivity extends FragmentActivity {

        RSSFeed feed;
        int pos;
        private DescAdapter adapter;
        private ViewPager pager;
       
        public static final String PREFS_NAME = "MyPrefsFile1";
        public CheckBox dontShowAgain;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.detail);

                ActionBar actionBar = getActionBar();
                actionBar.setDisplayHomeAsUpEnabled(true);

                // Get the feed object and the position from the Intent
                feed = (RSSFeed) getIntent().getExtras().get("feed");
                pos = getIntent().getExtras().getInt("pos");

                // Initialize the views
                adapter = new DescAdapter(getSupportFragmentManager());
                pager = (ViewPager) findViewById(R.id.pager);

                // Set Adapter to pager:
                pager.setAdapter(adapter);
                pager.setCurrentItem(pos);

        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {

                case android.R.id.home:
                        // app icon in action bar clicked; finish activity to go home
                        finish();
                        return true;
                }
                return super.onOptionsItemSelected(item);
        }

        public class DescAdapter extends FragmentStatePagerAdapter {
                public DescAdapter(FragmentManager fm) {
                        super(fm);
                }

                @Override
                public int getCount() {
                        return feed.getItemCount();
                }

                @Override
                public Fragment getItem(int position) {

                        DetailFragment frag = new DetailFragment();

                        Bundle bundle = new Bundle();
                        bundle.putSerializable("feed", feed);
                        bundle.putInt("pos", position);
                        frag.setArguments(bundle);

                        return frag;

                }

        }
       
        @Override
        protected void onStart() {
                AlertDialog.Builder adb=new AlertDialog.Builder(DetailActivity.this);
            LayoutInflater adbInflater = LayoutInflater.from(DetailActivity.this);
            View eulaLayout = adbInflater.inflate(R.layout.checkbox, null);
            dontShowAgain = (CheckBox)eulaLayout.findViewById(R.id.skip);
            adb.setView(eulaLayout);
            adb.setIcon(R.drawable.alert);
            adb.setTitle("INFO");
            adb.setMessage(Html.fromHtml("Trascina il dito a destra o a sinistra <br>" +
                                "per leggere gli altri articoli.<br>" +
                                "Premi l'icona CONDIVIDI per condividere<br>" +
                                "gli articoli che più ti piacciono."));
        adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {  
              public void onClick(DialogInterface dialog, int which) {
                  String checkBoxResult = "NOT checked";
                  if (dontShowAgain.isChecked())  checkBoxResult = "checked";
                        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                        SharedPreferences.Editor editor = settings.edit();
                                editor.putString("skipMessage", checkBoxResult);       
                                // Commit the edits!
                                editor.commit();
                          dialog.cancel();
                  return;  
              } });
       
        // create alert dialog
        AlertDialog alertDialog = adb.create();
       
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            String skipMessage = settings.getString("skipMessage", "NOT checked");
                if (!skipMessage.equalsIgnoreCase("checked") ) adb.show();
        }

}

Qui il layout checkbox.xml:
Codice (XML): [Seleziona]
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/layout_root"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:padding="10dp">
   
    <checkbox
       android:id="@+id/skip"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Non visualizzare in futuro" />
   
</linearlayout>

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #3 il: 20 Marzo 2013, 21:49:28 CET »
0
Se riesce a far partire l'app collegandola al pc è meglio..così possiamo leggere il messaggio d'errore..

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #4 il: 21 Marzo 2013, 09:42:52 CET »
0
LinearLayout e CheckBox vanno la maiuscola. Non usi l'autocompletamento di Eclipse?

Offline birbantello85

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GALAXY ACE PLUS
  • Play Store ID:
    birbantello85
  • Sistema operativo:
    ANDROID 2.3.6
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #5 il: 21 Marzo 2013, 16:18:11 CET »
0
Un momento... ma per caso devo dare qualche USES PERMISSION nel MANIFEST per fare in modo che l'app si ricordi la scelta del checkbox? ho visto che ci sono molte "android.permission.WRITE_.... " ma non saprei proprio quale faccia al caso mio...

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #6 il: 21 Marzo 2013, 22:08:37 CET »
0
Citazione
Un momento... ma per caso devo dare qualche USES PERMISSION nel MANIFEST per fare in modo che l'app si ricordi la scelta del checkbox? ho visto che ci sono molte "android.permission.WRITE_.... " ma non saprei proprio quale faccia al caso mio...
Non ti serve alcun permesso per usare le SharedPreferences.

Al netto di altri errori, il suggerimento di Ricky dovrebbe sistemare tutto.

Offline birbantello85

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GALAXY ACE PLUS
  • Play Store ID:
    birbantello85
  • Sistema operativo:
    ANDROID 2.3.6
Re:Visualizzare alert dialog all'avvio di un'activity
« Risposta #7 il: 07 Aprile 2013, 18:04:43 CEST »
0
Niente ho provato di tutto ma non funzia. Potete chiudere.
Grazie.