Autore Topic: Passare da un'activity ad un'altra...non ci riesco  (Letto 1195 volte)

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Passare da un'activity ad un'altra...non ci riesco
« il: 03 Giugno 2013, 11:27:13 CEST »
0
Stò cercando di provare un pò tutte le funzionalità di questo linguaggio ed oggi mi sono bloccato su questo: C'è uuna prima activity in cui c'è un button e qualche textview il mio scopo è quello di riuscire a passare ad un'altra activity cliccando il button...ecco quello che ho scritto:

main.xml
Codice (XML): [Seleziona]
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <EditText
       android:id="@+id/editText1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/textView2"
       android:layout_below="@+id/textView2"
       android:layout_marginLeft="18dp"
       android:layout_marginTop="24dp"
       android:textColor="#FF0000"
       android:ems="10"
       android:background="#FFFFFF"
       android:text="Username/Name" />

    <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/textView1"
       android:layout_centerVertical="true"
       android:textColor="#FF0000"
       android:onClick="pageReg"
       android:text="Register" />

    <Button
       android:id="@+id/button2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/button1"
       android:layout_alignBottom="@+id/button1"
       android:layout_alignLeft="@+id/textView3"
       android:textColor="#FF0000"
        android:text="Login" />

    <EditText
       android:id="@+id/editText2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_above="@+id/button1"
       android:layout_alignLeft="@+id/editText1"
       android:layout_marginBottom="20dp"
       android:background="#FFFFFF"
       android:ems="10"
       android:text="Password/mail"
       android:textColor="#FF0000" />

</RelativeLayout>

2° activity.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

    <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:layout_marginLeft="94dp"
       android:layout_marginTop="104dp"
       android:text="ButtonProva" />

</RelativeLayout>

manifest
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.myapp"
   android:versionCode="1"
   android:versionName="1.0" >
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="17" />

    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <activity
           android:name="com.example.myapp.MainActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
         <activity
           android:name="com.example.myapp.Registration"
           android:label="@string/app_name" >
       </activity>
       
      </application>

</manifest>

MainActivity.java
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
        private Button buttonLogin;
        private String user;
        private String pass;
        @Override
           protected void onCreate(Bundle savedInstanceState) {
                             super.onCreate(savedInstanceState);
                             setContentView(R.layout.activity_main);
        }



        public void pageReg (View Button ) {
                Intent intent = new Intent(this,Registration.class); // per passare ad unaltro activity
                        startActivity(intent);  //far partire la nuova activity
                }

    @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;
    }
   
}

Registration.java
Codice (Java): [Seleziona]
public class Registration extends Activity{
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registration);
       
        }
       
}


E' un codice semplice, ma c'è qualche errore che non riesco a capire....
grazie per l'aiuto

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Passare da un'activity ad un'altra...non ci riesco
« Risposta #1 il: 03 Giugno 2013, 11:33:09 CEST »
0
Prova ad aggiungere quei flag
Codice (Java): [Seleziona]
Intent refill = new Intent(getApplicationContext(),WorkInProgress.class); //uso il nome della classe activity.this oppure getApplicationContext()
                                        refill.addFlags(
                                        Intent.FLAG_ACTIVITY_CLEAR_TOP |
                                        Intent.FLAG_ACTIVITY_NEW_TASK);
                                        startActivity(refill);
Cmq devi aggiungere un listener al bottone...un listener è un ascoltatore di eventi..
fai eseguire nel main questa funzione

Codice (Java): [Seleziona]
public void Click(){
                //gestore
                View.OnClickListener gestore2 = new View.OnClickListener() {
                        public void onClick(View view) {
                                switch(view.getId()){
                                case R.id.nome_bottone:
                                //qui fai quello che vuoi al click del bottone
                                break;
                                }      
                        }
                };
                ///bottoni prima riga
                Button a1=(Button)findViewById(R.id.nome_bottone); //qui dopo id devi inserire il nome id che hai dichiarato sull'xml


                a1.setOnClickListener(gestore2);

        }
« Ultima modifica: 03 Giugno 2013, 11:43:54 CEST da MisterAnt »
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Passare da un'activity ad un'altra...non ci riesco
« Risposta #2 il: 03 Giugno 2013, 11:41:46 CEST »
0
Niente, mi dà sempre lo stesso messaggio quando clicco su button1: Unfortunately,MyApp has stopped

EDIT: provo l'ultima modifica
« Ultima modifica: 03 Giugno 2013, 11:46:24 CEST da leo87 »

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Passare da un\'activity ad un\'altra...non ci riesco
« Risposta #3 il: 03 Giugno 2013, 11:46:37 CEST »
0
Devi dichiarare tutte le tue activity nel manifest...lo hai fatto?

Post unito: 03 Giugno 2013, 11:49:44 CEST
Perdonami...lo hai fatto XD cmq prova a mettere il LogCat
« Ultima modifica: 03 Giugno 2013, 11:49:44 CEST da MisterAnt, Reason: Merged DoublePost »
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Passare da un'activity ad un'altra...non ci riesco
« Risposta #4 il: 03 Giugno 2013, 12:38:48 CEST »
0
Codice: [Seleziona]
06-03 10:35:45.692: E/AndroidRuntime(776): FATAL EXCEPTION: main
06-03 10:35:45.692: E/AndroidRuntime(776): java.lang.IllegalStateException: Could not find a method Click(View) in the activity class com.example.myapp.MainActivity for onClick handler on view class android.widget.Button with id 'button1'
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.view.View$1.onClick(View.java:3586)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.view.View.performClick(View.java:4204)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.view.View$PerformClick.run(View.java:17355)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.os.Handler.handleCallback(Handler.java:725)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.os.Handler.dispatchMessage(Handler.java:92)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.os.Looper.loop(Looper.java:137)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.app.ActivityThread.main(ActivityThread.java:5041)
06-03 10:35:45.692: E/AndroidRuntime(776):         at java.lang.reflect.Method.invokeNative(Native Method)
06-03 10:35:45.692: E/AndroidRuntime(776):         at java.lang.reflect.Method.invoke(Method.java:511)
06-03 10:35:45.692: E/AndroidRuntime(776):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-03 10:35:45.692: E/AndroidRuntime(776):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-03 10:35:45.692: E/AndroidRuntime(776):         at dalvik.system.NativeStart.main(Native Method)
06-03 10:35:45.692: E/AndroidRuntime(776): Caused by: java.lang.NoSuchMethodException: Click [class android.view.View]
06-03 10:35:45.692: E/AndroidRuntime(776):         at java.lang.Class.getConstructorOrMethod(Class.java:460)
06-03 10:35:45.692: E/AndroidRuntime(776):         at java.lang.Class.getMethod(Class.java:915)
06-03 10:35:45.692: E/AndroidRuntime(776):         at android.view.View$1.onClick(View.java:3579)
06-03 10:35:45.692: E/AndroidRuntime(776):         ... 11 more

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Passare da un'activity ad un'altra...non ci riesco
« Risposta #5 il: 03 Giugno 2013, 12:48:51 CEST »
0
L'errore è nell'xml dove per ogni bottone dichiari questo
Codice (XML): [Seleziona]
 android:onClick="pageReg"
Prova a rimuovere questa riga e utilizzare il mio metodo listener....ci sono vari metodi per creare un listener cmq
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Passare da un\\\'activity ad un\\\'altra...non ci riesco
« Risposta #6 il: 03 Giugno 2013, 12:53:59 CEST »
0
Ma onClick non è un xml che mi evita di creare un listener al button1 ? o meglio piuttosto che scrivere il listener in java scrivo quel semplice comando in xml che ha la stessa funzinalità del codice java che mi hai scritto tu?

con onClick non dichiaro solo la creazione di un listener al button1? perchè tu mi dici per ogni button?

ps è il secondo giorno che uso android ed alcne cose non le ho ancora capite  :-(

Post unito: 03 Giugno 2013, 16:53:26 CEST
Problema risolto...mi ero scordato di fare il metodo onCreateOptionsMenu nella seconda activity  :'( :'(
grazie mister per l'aiuto  ;-)

Post unito: 03 Giugno 2013, 19:01:50 CEST
Ora ho un'altro problema....come passo due stringhe da un'activity all'altra?

La classe Registration salva due stringhe che prendo da editText, il metodo insertServer() lo faccio partire da xml con il comando android:onClick (quindi parte da un'activity precedente)
Codice (Java): [Seleziona]
public class Registration extends Activity{
        protected String user;
        protected String pass;
       
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registration);
       
        }
          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;
            }
         
          public void insertServer(){
                       
                    EditText outputView1 = (EditText)findViewById(R.id.editText1);
                Editable debug1 = outputView1.getText();
                String nameinput1 = debug1.toString();
                user = nameinput1;
               
                EditText outputView2 = (EditText)findViewById(R.id.editText2);
                Editable debug2 = outputView2.getText();
                String nameinput2 = debug2.toString();
                pass = nameinput2;
               

                Intent city=new Intent(this,prov.class);
               
                String pkg=getPackageName();
               
                city.putExtra(pkg+".myString1", user);    
                city.putExtra(pkg+".myString2", pass);
               
                startActivity(city);
               
          }
         
 
}

a questo punto dovrebbe partire l'activity prov che dovrebbe stamparmi su un textview user e pass:
Codice (Java): [Seleziona]
public class prov extends Activity{
       

        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prova);
       
        Intent intent=getIntent();
       
        String pkg=getPackageName();
        String u=intent.getStringExtra(pkg+".myString1");  
        String p=intent.getStringExtra(pkg+".myString2");
       
                               
        TextView tv=(TextView)findViewById(R.id.textView1);      
        tv.append("myUser:"+u+"\n");
        tv.append("myPass:"+p+"\n");
       
        }
          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;
            }
}

però mi dà l'errore:
Codice: [Seleziona]
06-03 16:34:12.145: E/AndroidRuntime(789): FATAL EXCEPTION: main
06-03 16:34:12.145: E/AndroidRuntime(789): java.lang.IllegalStateException: Could not find a method insertServer(View) in the activity class com.example.myapp.Registration for onClick handler on view class android.widget.Button with id 'button1'
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.view.View$1.onClick(View.java:3586)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.view.View.performClick(View.java:4204)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.view.View$PerformClick.run(View.java:17355)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.os.Handler.handleCallback(Handler.java:725)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.os.Handler.dispatchMessage(Handler.java:92)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.os.Looper.loop(Looper.java:137)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.app.ActivityThread.main(ActivityThread.java:5041)
06-03 16:34:12.145: E/AndroidRuntime(789):         at java.lang.reflect.Method.invokeNative(Native Method)
06-03 16:34:12.145: E/AndroidRuntime(789):         at java.lang.reflect.Method.invoke(Method.java:511)
06-03 16:34:12.145: E/AndroidRuntime(789):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-03 16:34:12.145: E/AndroidRuntime(789):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-03 16:34:12.145: E/AndroidRuntime(789):         at dalvik.system.NativeStart.main(Native Method)
06-03 16:34:12.145: E/AndroidRuntime(789): Caused by: java.lang.NoSuchMethodException: insertServer [class android.view.View]
06-03 16:34:12.145: E/AndroidRuntime(789):         at java.lang.Class.getConstructorOrMethod(Class.java:460)
06-03 16:34:12.145: E/AndroidRuntime(789):         at java.lang.Class.getMethod(Class.java:915)
06-03 16:34:12.145: E/AndroidRuntime(789):         at android.view.View$1.onClick(View.java:3579)
06-03 16:34:12.145: E/AndroidRuntime(789):         ... 11 more


grazie per l'aiuto
« Ultima modifica: 03 Giugno 2013, 19:01:50 CEST da leo87, Reason: Merged DoublePost »

Offline MikeKeepsOnShine

  • Utente junior
  • **
  • Post: 84
  • Respect: 0
    • mikekeepsonshine
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Fame , Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 7
Re:Passare da un'activity ad un'altra...non ci riesco
« Risposta #7 il: 04 Giugno 2013, 18:11:05 CEST »
0
Ciao, io di solito faccio così per passare dati da una parte all'altra
Codice (Java): [Seleziona]
public class Registration extends Activity{
        protected String user;
        protected String pass;
                EditText outputView1;
                EditText outputView2;
       
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.registration);
               
                outputView1 = (EditText)findViewById(R.id.editText1);
        outputView2 = (EditText)findViewById(R.id.editText2);
               
        }
          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;
            }
         
          public void insertServer(){
                       
                user = outputView1.getText().toString();
                pass = outputView.getText().toString();

                Intent city=new Intent(this,prov.class);
                city.putExtra("username",user);
                city.putExtra("password",pass);
                startActivity(city);
               
          }
         

E nell'activity a cui arrivi
Codice (Java): [Seleziona]
     String user = getIntent().getStringExtra("username");
     String password = getIntent().getStringExtra("password");

E popoli la TextView
Codice (Java): [Seleziona]
 tv.setText(user+"\n"+password)
Spero ti sia d'aiuto  ;-)
True perfection has to be imperfect

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Passare da un'activity ad un'altra...non ci riesco
« Risposta #8 il: 04 Giugno 2013, 20:04:52 CEST »
0
Ho provato ma niente, mi dà sempre lo stesso errore

può essere che bisogna inserire i metodi di putExtra dentro il metodo OnCreate?

EDIT:ho risolto...mi ero scordato di mettere View ta i parametri di passare al metodo inserServer.....errore grave  :'(
grazie per l'aiuto ;)
« Ultima modifica: 04 Giugno 2013, 20:36:36 CEST da leo87 »