Autore Topic: chiamare una seconda activity  (Letto 3420 volte)

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
chiamare una seconda activity
« il: 20 Aprile 2012, 11:56:15 CEST »
0
buongiorno a tutti. Mi sono appena iscritto al forum e ho da pochi giorni iniziato la programmazione android. Sto cercando di fare una cosa molto semplice ossia al click su un bottone aprire una nuova activity. Vi posto il codice da me scritto, non riesco a capire dove sbaglio. Grazie a tutti per l'aiuto

questo è il codice xml per il main
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="hai premuto il bottone :"
       android:textSize="45dp"
       android:layout_gravity="center"
       android:id="@+id/tvDisplay"
        />

    <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Bottone1"
       
        />

   
    <Button
       android:id="@+id/button2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Bottone2"
       
        />
   
</LinearLayout>


questo è il codice xml per la seconda activity
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >


    <TextView
       android:id="@+id/textView1"
       android:layout_width="180dp"
       android:layout_height="wrap_content"
       android:text="" />

</LinearLayout>

questo è il codice java per la prima activity, dove solo al click sul primo bottone richiamo la nuova activity
Codice (Java): [Seleziona]
package com.prove.lorenzo;




import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ProveBottoniActivity extends Activity {
    /** Called when the activity is first created. */
       
        TextView display;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final Button primo = (Button) findViewById(R.id.button1);
        Button secondo = (Button) findViewById(R.id.button2);
        display = (TextView) findViewById(R.id.tvDisplay);
        primo.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                       
                                //primo.setText("bottone1bbb");
                                Intent miaIntent = new Intent(ProveBottoniActivity.this, SecondaActivity.class);
                                startActivity(miaIntent);
                                 
                               
                        }
                });
       
        secondo.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                       
                                display.setText("bottone2");
                        }
                });
       
    }
}


questo è il codice java per la seconda activity
Codice (Java): [Seleziona]
package com.prove.lorenzo;

import android.app.Activity;
import android.os.Bundle;

import android.widget.TextView;

public class SecondaActivity extends Activity{
       
        TextView tv = (TextView) findViewById(R.id.textView1);
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.seco);
               
       
              tv.setText("Questa è la seconda activity");    
             
             
        }

}

ed infine il codice del manifest
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.prove.lorenzo"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name" >
        <activity
           android:name=".ProveBottoniActivity"
           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=".SecondaActivity" >
            </activity>
    </application>

</manifest>

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #1 il: 20 Aprile 2012, 12:09:18 CEST »
0
Nella classe ProveBottoniActivity metti questo codice:

Codice (Java): [Seleziona]
Button buttonIntent = (Button) findViewById(R.id.button1);

buttonIntent.setOnTouchListener(new OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {

                                switch (event.getAction() & MotionEvent.ACTION_MASK) {
                                case MotionEvent.ACTION_DOWN:
                                       

                                        break;
                                case MotionEvent.ACTION_UP:
                                        Intent intent = new Intent(ProveBottoniActivity.this, SecondaActivity.class);
startActivity(intent);
                                        break;
                                }
                                return true;

                        }
                });

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:chiamare una seconda activity
« Risposta #2 il: 20 Aprile 2012, 12:12:36 CEST »
0
scusami lo devo mettere nel create o nell onclick del primo bottone?

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #3 il: 20 Aprile 2012, 12:28:45 CEST »
0
Codice (Java): [Seleziona]
package com.prove.lorenzo;




import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ProveBottoniActivity extends Activity {
    /** Called when the activity is first created. */
       
        TextView display;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    Button buttonIntent = (Button) findViewById(R.id.button1);

    buttonIntent.setOnTouchListener(new OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {

                                switch (event.getAction() & MotionEvent.ACTION_MASK) {
                                case MotionEvent.ACTION_DOWN:
                                       

                                        break;
                                case MotionEvent.ACTION_UP:
                                        Intent intent = new Intent(ProveBottoniActivity.this, SecondaActivity.class);
                                        startActivity(intent);
                                        break;
                                }
                                return true;

                        }
                });
   }
       

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:chiamare una seconda activity
« Risposta #4 il: 20 Aprile 2012, 12:41:10 CEST »
0
Non so il motivo ma non funziona questa nuova soluzione

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #5 il: 20 Aprile 2012, 12:42:23 CEST »
0
Non so il motivo ma non funziona questa nuova soluzione

A me il tuo codice iniziale sembrava corretto... posta il logcat!

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:chiamare una seconda activity
« Risposta #6 il: 20 Aprile 2012, 12:47:45 CEST »
0
scusa l'ignoranza come faccio a prendere i log??

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #8 il: 20 Aprile 2012, 12:55:33 CEST »
0
posta il logCat

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:chiamare una seconda activity
« Risposta #9 il: 20 Aprile 2012, 13:08:01 CEST »
0
il logcat riesco a visualizzarlo su eclipse ma non riesco a prenderlo per postarlo qui..

Offline boccia

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #10 il: 20 Aprile 2012, 13:10:42 CEST »
0
devi prima salvare tutto cliccando dove c'è il floppy grigio sul logCat

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:chiamare una seconda activity
« Risposta #11 il: 20 Aprile 2012, 13:11:11 CEST »
0
credo di esserci riuscito


04-20 11:10:05.264: ERROR/AndroidRuntime(638): FATAL EXCEPTION: main
04-20 11:10:05.264: ERROR/AndroidRuntime(638): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.prove.lorenzo/com.prove.lorenzo.SecondaActivity}: java.lang.NullPointerException
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.os.Looper.loop(Looper.java:123)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at java.lang.reflect.Method.invokeNative(Native Method)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at java.lang.reflect.Method.invoke(Method.java:521)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at dalvik.system.NativeStart.main(Native Method)
04-20 11:10:05.264: ERROR/AndroidRuntime(638): Caused by: java.lang.NullPointerException
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.Activity.findViewById(Activity.java:1637)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at com.prove.lorenzo.SecondaActivity.<init>(SecondaActivity.java:10)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at java.lang.Class.newInstanceImpl(Native Method)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at java.lang.Class.newInstance(Class.java:1429)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
04-20 11:10:05.264: ERROR/AndroidRuntime(638):     ... 11 more


Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #12 il: 20 Aprile 2012, 13:24:46 CEST »
0
Perfetto, adesso sai che l'errore è un NullPointerException che accade alla riga 10 di SecondaActivity.java

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:chiamare una seconda activity
« Risposta #13 il: 20 Aprile 2012, 13:29:31 CEST »
0
quindi ho un nullpointerexception qui:

TextView tv = (TextView) findViewById(R.id.textView1);

ma qui sto solo collegando la textview del layout con java o no?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:chiamare una seconda activity
« Risposta #14 il: 20 Aprile 2012, 13:31:17 CEST »
0
quindi ho un nullpointerexception qui:

TextView tv = (TextView) findViewById(R.id.textView1);

ma qui sto solo collegando la textview del layout con java o no?

Esatto, ma di quale layout?  8-)