Visualizzazione dei risultati da 1 a 10 su 11

Visualizzazione discussione

  1. #5
    Allora l'app si apre con un dialog che richiede di inserire un nome, premendo "Continue" viene stampato un messaggio di benvenuto personalizzato, altrimenti premendo "Cancel" il messaggio non viene personalizzato. Ho fatto in modo che il dialog si apra solo la prima volta utilizzando una variabile statica, non so se è da cioccolataio ma al momento non mi veniva in mente altro

    codice:
    public class MainActivity extends AppCompatActivity
    {
        private static boolean firstTime = true;
        private TextView welcoming = null;
        private String welcomingString = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_main);
    
            if(firstTime)
                showDialogForm();
    
            welcoming = (TextView) findViewById(R.id.welcoming);
            welcomingString = (String) welcoming.getText();
    
        }
    
        private void showDialogForm()
        {
            final Dialog d=new Dialog(this);
            d.setCancelable(false);
            d.setContentView(R.layout.dialog_login);
            d.show();
    
            Button continueButton = (Button) d.findViewById(R.id.continueButton);
            Button cancelButton = (Button) d.findViewById(R.id.cancelButton);
    
            continueButton.setOnClickListener
                    (
                            new View.OnClickListener()
                            {
                                @Override
                                public void onClick(View view)
                                {
                                    EditText name = (EditText) d.findViewById(R.id.account_name);
    
                                    welcoming.setText("Welcome " +name.getText()+ ", this is my application!");
    
                                    welcoming.setTextSize(20);
    
                                    welcomingString = (String) welcoming.getText();
    
                                    d.cancel();
    
                                }
                            }
    
                    );
    
            cancelButton.setOnClickListener
                    (
                            new View.OnClickListener()
                            {
                                @Override
                                 public void onClick(View view)
                                {
                                    welcoming.setText("Welcome, this is my application!");
    
                                    welcoming.setTextSize(20);
    
                                    d.cancel();
    
                                }
                            }
    
                    );
    
            firstTime = false;
    
        }

    Dopodichè i due metodi:

    codice:
    @Override
    public void onSaveInstanceState (Bundle state)
    {
        super.onSaveInstanceState(state);
    
        state.putString("WelcomingText", welcomingString);
    
    }
    
    @Override
    public void onRestoreInstanceState (Bundle state)
    {
        super.onRestoreInstanceState(state);
    
        welcoming.setText(state.getString("WelcomingText"));
    
    }

    Ho pensato anche io che onRestore non venisse chiamato per quel motivo, ma ho anche letto sulla documentazione che il Bundle che riceve l'onCreate è lo stesso su cui salvo le cose nell'onSave, quindi ho provato a recuperare la stringa dall'onCreate ma il bundle risulta sempre null.
    Ultima modifica di Leonerd; 16-12-2016 a 14:51

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.