Autore Topic: Creare menu con lo stesso layout di quello delle chiamate  (Letto 609 volte)

Offline raimondo

  • Utente junior
  • **
  • Post: 130
  • Respect: 0
    • Mostra profilo
Creare menu con lo stesso layout di quello delle chiamate
« il: 11 Novembre 2011, 08:42:56 CET »
0
Salve ragazzi vorrei creare un applicazione che ha lo stesso layout di quello delle chiamate...in poche parole avere il menu sopra con varie finestre da aprire...tipo phone, call log, favorite, etc... il risultato dovrebbe essere una cosa simile alla foto...però con le mie poersonalizzazioni.... qualcuno saprebbe darmi una mano? grazie mille
« Ultima modifica: 14 Novembre 2011, 18:56:47 CET da raimondo »

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:Creare menu con lo stesso layat di quello delle chiamate
« Risposta #1 il: 11 Novembre 2011, 09:06:51 CET »
+1
Tutorial ufficiale per il TabLayout : Tab Layout | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline raimondo

  • Utente junior
  • **
  • Post: 130
  • Respect: 0
    • Mostra profilo
Re:Creare menu con lo stesso layat di quello delle chiamate
« Risposta #2 il: 12 Novembre 2011, 18:53:22 CET »
0
grazie mille per il consiglio....adesso proverò ad usarla...ah scusami mica sai dove posso trovare delle altre immagini da usare come icone? e grazie ancora

Offline raimondo

  • Utente junior
  • **
  • Post: 130
  • Respect: 0
    • Mostra profilo
Re:Creare menu con lo stesso layat di quello delle chiamate
« Risposta #3 il: 12 Novembre 2011, 19:21:07 CET »
0
Scusami ho provato a copiare un po il codice...credo di aver seguito tutti passi...infatti nn mi da errore eclipse..però l'applicazione poi nn parte...esce il solito "Sorry, l'applicazione deve essere teminate" e roba simile ora posto il logcat sperando ke qualcuno mi possa aiutatare:

Codice: [Seleziona]
11-12 19:20:09.231: ERROR/AndroidRuntime(355): FATAL EXCEPTION: main
11-12 19:20:09.231: ERROR/AndroidRuntime(355): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.prova/android.prova.HelloTabWidgetActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.os.Looper.loop(Looper.java:123)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.ActivityThread.main(ActivityThread.java:3647)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at java.lang.reflect.Method.invokeNative(Native Method)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at java.lang.reflect.Method.invoke(Method.java:507)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at dalvik.system.NativeStart.main(Native Method)
11-12 19:20:09.231: ERROR/AndroidRuntime(355): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.TabActivity.onContentChanged(TabActivity.java:105)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.Activity.setContentView(Activity.java:1657)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.prova.HelloTabWidgetActivity.onCreate(HelloTabWidgetActivity.java:15)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
11-12 19:20:09.231: ERROR/AndroidRuntime(355):     ... 11 more

Offline raimondo

  • Utente junior
  • **
  • Post: 130
  • Respect: 0
    • Mostra profilo
Re:Creare menu con lo stesso layat di quello delle chiamate
« Risposta #4 il: 13 Novembre 2011, 09:46:33 CET »
0
errore mio!!!! :-X....avevo fatto un sbaglio nel manifest...adeso però ho un altro problema...la mia applicazione dovrebbe aprirsi quando arriva un chiamata e dovrebbe passare alla mia activity, che si occupa della ricerca, il numero di telefono...il problema è ke introducendo questo tab layaout...nn gli passa più il numero di telefono...nn ho ancora capito gli errori ke faccio ora posto un po le classi:
classe ke estende TAbActivity:
Codice (Java): [Seleziona]
public class ContactNotifyActivity extends TabActivity {
    /** Called when the activity is first created. */
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, ContactView.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("artists").setIndicator("Principale",
                          res.getDrawable(R.drawable.ic_tab_artists))
                      .setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs
        intent = new Intent().setClass(this, SettingActivity.class);
        spec = tabHost.newTabSpec("albums").setIndicator("Ricerca",
                          res.getDrawable(R.drawable.ic_tab_artists))
                      .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, SettingActivity.class);
        spec = tabHost.newTabSpec("songs").setIndicator("Setting",
                          res.getDrawable(R.drawable.ic_tab_artists))
                      .setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(2);
    }
       
}

il broadcast receiver:
Codice (Java): [Seleziona]
public class BroadcastCallSms extends BroadcastReceiver {

       
        private String numSms = null;
        private String numCall = null;
        @Override
        public void onReceive(Context context, Intent intent) {
               
                String action = intent.getAction();
               
        if(action.equalsIgnoreCase("android.intent.action.PHONE_STATE")){
                if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                        numCall = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
                        lanciaActivity(context,"numCall",numCall);
                }        
        }
        else {
                Bundle bundle = intent.getExtras();
                Object[] pdus = (Object[]) bundle.get("pdus");
                SmsMessage message = SmsMessage.createFromPdu((byte[])pdus[0]);
                if(!message.isEmail()){
                        numSms = message.getOriginatingAddress();
                        lanciaActivity(context,"numSms",numSms);
                }
       
               
        }
       
       
        }
       
         void lanciaActivity(Context context, String nomeVar, String valoreVar){
               
                Intent myIntent = new Intent(Intent.ACTION_VIEW,null, context, ContactNotifyActivity.class);  
                String pack=context.getPackageName();
                myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        myIntent.putExtra(pack + "." + nomeVar,valoreVar);
        context.startActivity(myIntent);        
        }
       
       
       
       
}

ed infine una delle activity del tab layout ke dovrebbe fare la ricerca:

Codice (XML): [Seleziona]
public class ContactView extends Activity{
         /** Called when the activity is first created. */
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contact_view);
       
        Contact c;
        Intent myIntent=getIntent();
       
        String pack=getPackageName();
       
        String numCall = myIntent.getStringExtra(pack + ".numCall");
        String numSms = myIntent.getStringExtra(pack + ".numSms");

ecc.......

l'errore sarà nel broadcast receiver ke passa il valore solo a ContactNotify(cioè la classe ke estende TAbActivity) però se faccio
Intent myIntent = new Intent(Intent.ACTION_VIEW,null, context, ContactView.class);   
nn parte il Tab Layout ma solo l'Activity......
grazie in anticipo per l'aiuto ....ciao

Offline raimondo

  • Utente junior
  • **
  • Post: 130
  • Respect: 0
    • Mostra profilo
Re:Creare menu con lo stesso layat di quello delle chiamate
« Risposta #5 il: 14 Novembre 2011, 18:04:16 CET »
0
nessuno puoi aiutarmi....cioè una volta ke ho passato l'intent coi i dati a ContactNotifyActivity  come posso rendere visibile all'altra activity CotactView gli extra ke mi servono?