Autore Topic: Unfortunately app has stopped  (Letto 396 volte)

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Unfortunately app has stopped
« il: 20 Maggio 2014, 11:36:48 CEST »
0
Ciao a tutti!!
Vi posto la mia semplice activity che mi da il problema in oggetto.
Se commento la parte del button.setOnClickListener funziona corretamente. Perchè????? :-[



Codice (Java): [Seleziona]
[code=java]package com.example.cycleactivity;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class CycleActivity extends ActionBarActivity {
        private Button button;
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            txtMsg.setText(savedInstanceState.getCharSequence("EDIT_TEXT"));
            Log.v("RESTORE....", "Avviato il ripristino");
            Toast.makeText(this, "onRestoreInstanceState", 5).show();
        }

        @Override
        protected void onSaveInstanceState(Bundle outState){
                super.onSaveInstanceState(outState);
               
                outState.putString("EDIT_TEXT", txtMsg.getText().toString()+"_saved");
               
                Toast.makeText(this, "onSaveInstanceState", 1).show();
        }
       
    EditText txtMsg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cycle);
        txtMsg = new EditText(this);
        setContentView(txtMsg);
        Toast.makeText(this, "onCreate", 1).show();
        button = (Button)this.findViewById(R.id.buttonGo        );
        button.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                               
                        }
                });
    }
   
    @Override
    protected void onDestroy(){
        super.onDestroy();
        Toast.makeText(this,"onDestroy", 1).show();
    }
}
[/code]


« Ultima modifica: 20 Maggio 2014, 12:28:38 CEST da andrea07 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Unfortunately app has stopped
« Risposta #1 il: 20 Maggio 2014, 12:13:38 CEST »
0
Prima di tutto quando posti il codice usa il marcatore per formattarlo (come vedi in tutti gli altri post del forum). Basta che evidenzi il codice e poi clicchi sull'icona .

La ragione dell'errore la vedi scritta nel LogCat, che non hai postato, ma che è fondamentale per capire gli errori (ti consiglio di cominciare a prenderci confidenza perchè è lo strumento di base del debug).

A occhio il problema sta nel fatto che hai chiamato due volte la setContentView (di regola la puoi chiamare una sola volta) e la seconda volta hai scelto come View una edittext che non contiene sicuramente il Button di cui poco dopo vai a reperire l'id per collegarci il listenere. Se commenti setContentView(txtMsg); probabilmente dovrebbe andare, ma ti rimane il problema della txtMsg, di cui non capisco bene l'uso (perchè la crei nel codice invece che metterla nel layout?)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Re:Unfortunately app has stopped
« Risposta #2 il: 20 Maggio 2014, 12:36:37 CEST »
0
Scusa, codice formattato   ;-)
Si effettivamente avevo lasciato dei copia incolla da altro codice, errore risolto!! Ho rimosso tutto quello che riguardava la txtMsg ed è ok.

Grazie!!!  :D

Posto lo stesso problema per un altro progetto. In particolare ho semplicemente creato due activity, la prima con un pulsante che al click avvia la seconda. La cosa strana è che funzionava, poi ad un certo punto la faccio partire e mi va in crash. Posto il codice :

Codice (Java): [Seleziona]
package com.example.navigation;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
        protected static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
        Button buttonGo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonGo = (Button)findViewById(R.id.button1);
        buttonGo.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                                String message = "parametro passato";
                                intent.putExtra(EXTRA_MESSAGE, message);
                                startActivity(intent);
                        }
                });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


}

Codice (Java): [Seleziona]
package com.example.navigation;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;

public class SecondActivity extends ActionBarActivity {
        TextView text1 = (TextView)findViewById(R.id.textView1);
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_second);
                Intent intent = getIntent();
                String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
                //Toast.makeText(this, message, 3).show();
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {

                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.second, menu);
                return true;
        }


}

Anche riavviando eclipse il problema persiste..

grazie
« Ultima modifica: 20 Maggio 2014, 13:34:12 CEST da andrea07 »