Autore Topic: Problema banale due activity  (Letto 597 volte)

Offline bellottafrancesco

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Problema banale due activity
« il: 02 Ottobre 2011, 22:12:29 CEST »
0
Ciao ragazzi questo è il mio primo post e mi sto avvicinando alla programmazione android da pochissimo.
Mi sono appassionato tanto e cosi ho deciso di imparare.
Fino ad ora ho letto parecchi tutorial e mi sto aiutando con il testo di Carli, pero da qualche giorno ho detto basta teoria e ho iniziato a mettere mano al codice.
La mia app non fa nulla, in realtà volevo iniziare ad approfondire il concetto di intent e activity.
In pratica ho una classe main con dei bottoni e solo il primo di questi cliccandolo dovrebbe lanciarmi la seconda activity-
Il progetto e cosi strutturato classe main, poi classe att2, poi due layout main e attivita2(relativo alla classe att2).
Ho letto anche il tutorial che c'e qui sul forum per le due activity ma non riesco a capire dove sbaglio il compilatore non mi da nemmeno un errore quindi non so dove modificare il codice,  ora ve ne posto un po spero che insieme risolveremo :)

MAIN
Codice: [Seleziona]
package com.primaapplicazione;

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 PrimaapplicazioneActivity extends Activity {
    /** Called when the activity is first created. */
         
    TextView display;
    Button add,sub,molt,div;
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        add = (Button) findViewById (R.id.button1);
        sub = (Button) findViewById (R.id.button2);
        molt = (Button) findViewById (R.id.button3);
        div = (Button) findViewById (R.id.button4);
        /**  display = (TextView)  findViewById (R.id.button1);*/
        add.setOnClickListener(new View.OnClickListener() {
                @Override
                        public void onClick(View v) {
                                Intent i = new Intent(v.getContext(), att2.class);
                                startActivity(i);
                                }
                               
                                // TODO Auto-generated method stub
                               
                });
       
    }
}

ATT2
Codice: [Seleziona]
package com.primaapplicazione;
import android.app.Activity;
import android.os.Bundle;

public class att2 extends Activity {
        public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
        }

};

MANIFEST
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.primaapplicazione"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

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

    </application>
</manifest>

Offline ALEX88-ANDR0!D

  • Utente normale
  • ***
  • Post: 173
  • The Special One
  • Respect: +13
    • Google+
    • droidev88
    • Mostra profilo
  • Dispositivo Android:
    HTC DESIRE HD
  • Sistema operativo:
    WINDOWS 7
Re:Problema banale due activity
« Risposta #1 il: 02 Ottobre 2011, 22:37:46 CEST »
0
ciao e benvenuto bellottafrancesco ... piccola nota il primo codice è il .java della prima schermata ... non è il main  :-)  cmq dal .java creo un layout compatibile e provo il tuo progetto .

piccolo consiglio : quando hai dei problemi  come nel caso tuo in eclipse non viene segnalato nessun errore , ma quando provi a far partire la  la app questa si chiude subito  prova ad utilizzare il logcat di eclipse , nelle richieste di aiuto in tutto il forum noterai che il logcat viene chiesto sempre   

... prova a modificare app2.java in App2.java in pratica mettere la prima lettera maiuscola , anche nel manifest cambia app2 in App2 .

allora ecco la soluzione


1)
per prima cosa i .java devono iniziare con lettera maiuscola  infatti quando crei un nuova calsse .java se utilizzi una lettera minucola ti apparirà questo 
Citazione
Type name is discouraged. By convention, Java type names usually start with an uppercase letter
se te premi fine non ti arriva nessun errore nel campo in basso "problems"

2) personalmente quando devo lanciare una seconda activity io utilizzo   questo codice
Codice (Java): [Seleziona]
 add.setOnClickListener(new View.OnClickListener() {
                @Override
                        public void onClick(View v) {
                                Intent i = new Intent(PrimaapplicazioneActivity.this,Att2.class);
                                startActivity(i);
                                }
anziche
Codice (Java): [Seleziona]
add.setOnClickListener(new View.OnClickListener() {
                @Override
                        public void onClick(View v) {
                                Intent i = new Intent(v.getContext(), att2.class);
                                startActivity(i);
                                }
non so quale sia più pulito come codice , cmq vanno bene tutti e due.
3) nel tuo ATT2 per intenderci questo
Codice (Java): [Seleziona]
package com.primaapplicazione;
import android.app.Activity;
import android.os.Bundle;

public class att2 extends Activity {
        public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
 !!!!   setContentView(R.layout.main);   !!!!  o_O
        }

};

hai dato come setContentView (R.layout.main); al posto di (R.layout.attivita2); in questo modo lui va prendere la schermata main al posto della attivita2 ergo se clicchi sul pulsante "add" (quello che dovrebbe far partire la seconda activity) se fai attenzione noti che lo schermo dell'emulatore resta lo stesso anzi si sposta leggermente a destra per un secondo .

per il resto il codice è tutto ok , anche il manifest è aposto .
« Ultima modifica: 02 Ottobre 2011, 23:22:52 CEST da ALEX88-ANDR0!D »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Problema banale due activity
« Risposta #2 il: 02 Ottobre 2011, 23:01:25 CEST »
0
Codice (Java): [Seleziona]
Intent i = new Intent(v.getContext(), att2.class);
Il riferimento v indica l'oggetto View associato al listener, che in questo caso è il Button, mentre il "contesto" nel quale si vuole far partire la secoda activity è l'activity principale (il contesto del package dell'applicazione... :-o)
Devi sostituire quindi v.getContext() con il riferimento della tua activity principale.

Codice (Java): [Seleziona]
Intent i = new Intent(PrimaapplicazioneActivity.this, att2.class);
P.S : I Layout delle due activity sono uguali. Ma forse è un errore di copia-incolla :-P


Offline bellottafrancesco

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Problema banale due activity
« Risposta #3 il: 03 Ottobre 2011, 11:08:31 CEST »
0
Ragazzi che dire grazieeeee comunque devo stare molto più attento e fare le cose per gradi erano tutti errori di distrazione e fretta :-)
Grazie spero di imparare ancora moltooooo