Autore Topic: Applicazione crasha all'avvio FATAL EXCEPTION: main  (Letto 1938 volte)

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Applicazione crasha all'avvio FATAL EXCEPTION: main
« il: 23 Maggio 2013, 22:52:45 CEST »
0
Qualche giorno fa ho chiesto come fare un'app per cambiare il governor della cpu.. premettendo che primo sono alle prime armi con androi e second l'app è solo per me e per divertimento personale, avrei un problema. Nella mia applicazione (funzionante) vorrei però aggiungere la possibilità di visualizzare le info della cpu e della memoria.. per far ciò ho trovato del codice da qui: Android Series: Display device CPU and Memory info . Se provato su un'app creata al momento funziona perfettamente.. Se invece quello stesso identico codice lo riporto nella mia all'avvio crasha! E' una cosa frustrante. vi lascio il log:
Codice: [Seleziona]
05-23 22:32:15.256: E/Trace(16369): error opening trace file: No such file or directory (2)
05-23 20:58:37.803: E/AndroidRuntime(30025): FATAL EXCEPTION: main
05-23 20:58:37.803: E/AndroidRuntime(30025): java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.lucazanini.swipeviews/eu.lucazanini.swipeviews.MainActivity}: java.lang.NullPointerException
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.ActivityThread.access$600(ActivityThread.java:153)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.os.Handler.dispatchMessage(Handler.java:99)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.os.Looper.loop(Looper.java:137)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.ActivityThread.main(ActivityThread.java:5226)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at java.lang.reflect.Method.invokeNative(Native Method)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at java.lang.reflect.Method.invoke(Method.java:511)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at dalvik.system.NativeStart.main(Native Method)
05-23 20:58:37.803: E/AndroidRuntime(30025): Caused by: java.lang.NullPointerException
05-23 20:58:37.803: E/AndroidRuntime(30025):         at eu.lucazanini.swipeviews.MainActivity.onCreate(MainActivity.java:49)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.Activity.performCreate(Activity.java:5104)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-23 20:58:37.803: E/AndroidRuntime(30025):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
05-23 20:58:37.803: E/AndroidRuntime(30025):         ... 11 more
Inoltre la console mi segna anche questo:
Codice: [Seleziona]
[2013-05-23 22:00:40 - ddms] null
java.nio.BufferOverflowException
        at java.nio.HeapByteBuffer.put(Unknown Source)
        at com.android.ddmlib.JdwpPacket.movePacket(JdwpPacket.java:235)
        at com.android.ddmlib.Debugger.sendAndConsume(Debugger.java:347)
        at com.android.ddmlib.Client.forwardPacketToDebugger(Client.java:628)
        at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:344)
        at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)
L'errore si genera solo e soltanto nel momento in cui aggiungo la parte riguardante la cpu e la memoria.  Qualche idea?

ps: ho provato ad inserire il codice nel mio senza risultati e ora ho creato un'altra activity con tutta la pappardella di codice che è presente nell'esempio e richiamata poi nel mio onCreate. ma comunque nulla da fare. crasha all'avvio.

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #1 il: 23 Maggio 2013, 23:09:37 CEST »
0
leggendo il log dice che in riga 49 c'è una variabile che non ha valore valido
dovresti postare un po di codice per capire meglio

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Applicazione crasha all\'avvio FATAL EXCEPTION: main
« Risposta #2 il: 23 Maggio 2013, 23:26:30 CEST »
0
leggendo il log dice che in riga 49 c'è una variabile che non ha valore valido
dovresti postare un po di codice per capire meglio
Ecco la MainActivity:
Codice (Java): [Seleziona]
package eu.lucazanini.swipeviews;

import android.app.ActionBar;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends FragmentActivity {

    CollectionPagerAdapter mCollectionPagerAdapter;
            ViewPager mViewPager;
            TextView textOut;
 // Notification code
        private static final int SIMPLE_NOTIFICATION_ID = 1;
     
     NotificationManager mNotificationManager;
     // fine
     @Override
    public void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Readcpuinfo
        Intent cpuintent = new Intent(this, CPUinfo.class);
        startActivity(cpuintent);
        //fine readcpuinfo
       
        // Notification code
    mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    View btnradio_hindi = findViewById(R.id.radio_hindi);
    // fine
        mCollectionPagerAdapter = new CollectionPagerAdapter(
                getSupportFragmentManager());

        // Set up action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        // Set up the ViewPager, attaching the adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mCollectionPagerAdapter);
    }
     
           
    /// Inizio creazione funzioni

    public Boolean execCommands(String... command) {
            try {
                Runtime rt = Runtime.getRuntime();
                Process process = rt.exec("su");
                DataOutputStream os = new DataOutputStream(process.getOutputStream());

                for(int i = 0; i < command.length; i++) {
                    os.writeBytes(command[i] + "\n");
                    os.flush();
                }
                os.writeBytes("exit\n");
                os.flush();
                process.waitFor();
            } catch (IOException e) {
                return false;
            } catch (InterruptedException e) {
                return false;
            }
            return true;
        }
   
    /**
     * A {@link android.support.v4.app.FragmentStatePagerAdapter} that returns a
     * fragment representing an object in the collection.
     */

    public class CollectionPagerAdapter extends FragmentStatePagerAdapter {

        final int NUM_ITEMS = 3; // number of tabs

        public CollectionPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            Fragment fragment = new TabFragment();
            Bundle args = new Bundle();
            args.putInt(TabFragment.ARG_OBJECT, i);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public CharSequence getPageTitle(int position) {

            String tabLabel = null;
            switch (position) {
            case 0:
                tabLabel = getString(R.string.label1);
                break;
            case 1:
                tabLabel = getString(R.string.label2);
                break;
            case 2:
                tabLabel = getString(R.string.label3);
                break;
            }

            return tabLabel;
        }
    }
   
    /**
     * A dummy fragment representing a section of the app, but that simply
     * displays dummy text.
     */

    public static class TabFragment extends Fragment {

        public static final String ARG_OBJECT = "object";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            Bundle args = getArguments();
            int position = args.getInt(ARG_OBJECT);

            int tabLayout = 0;
            switch (position) {
            case 0:
                tabLayout = R.layout.tab1;
                break;
            case 1:
                tabLayout = R.layout.tab2;
                break;
            case 2:
                tabLayout = R.layout.tab3;
                break;
            }

            View rootView = inflater.inflate(tabLayout, container, false);

            return rootView;
        }
    }
    public void onRadioButtonClicked(View view) {

        ((RadioButton) view).isChecked();

        // Check which radio button was clicked
       // switch(view.getId()) {
       // case R.id.radio_hindi:
        //    if (checked)
       
        switch (view.getId())
        {
        case R.id.radio_hindi:
                String[] commands = {
                                "echo 3 > /proc/sys/vm/drop_caches",
                                "cat /proc/meminfo | awk 'NR == 2'"
                               
            };
                sendSimpleNotification();
                Toast.makeText(this, "Hai liberato memoria! Hai: " + Runtime.getRuntime().freeMemory() + "", Toast.LENGTH_LONG).show();
            execCommands(commands);

            String commandText = "echo 'foo' >> /sdcard/foo.txt\necho 'bar' >> /sdcard/foo.txt";

            execCommands(commandText.split("\n"));
        break;
         
        case R.id.radio_english:
                String[] commands1 = {"echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"};
                execCommands(commands1);
                sendSimpleNotificationOndemand();
                Toast.makeText(this, "Hai selezionato il governor Ondemand", Toast.LENGTH_LONG).show();
        break;
        case R.id.interactive_btn:
                String[] commands2 = {"echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"};
                execCommands(commands2);
                sendSimpleNotificationInteractive();
                Toast.makeText(this, "Hai selezionato il governor: Interactive", Toast.LENGTH_LONG).show();
        break;
        case R.id.conservative_btn:
                String[] commands3 = {"echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"};
                execCommands(commands3);
                sendSimpleNotificationConservative();
                Toast.makeText(this, "Hai selezionato il governor: Conservative", Toast.LENGTH_LONG).show();
        break;
        }
    }
    protected void cancelSimpleNotification() {
        mNotificationManager.cancel(SIMPLE_NOTIFICATION_ID);
}
private void sendSimpleNotification() {

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                        MainActivity.this);

        // Titolo e testo della notifica
        notificationBuilder.setContentTitle("Boost RAM");
        notificationBuilder.setContentText("Memoria libera: "+ Runtime.getRuntime().freeMemory() + "bytes");

        // Testo che compare nella barra di stato non appena compare la notifica
        notificationBuilder.setTicker("Memoria liberata con successo");

        // Data e ora della notifica
        notificationBuilder.setWhen(System.currentTimeMillis());

        // Icona della notifica
        notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

        // Creiamo il pending intent che verrà lanciato quando la notifica
        // viene premuta
        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                        notificationIntent, 0);
       
        notificationBuilder.setContentIntent(contentIntent);

        // Impostiamo il suono, le luci e la vibrazione di default
        notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                        | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

        mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                        notificationBuilder.build());
}
// Notification per il governor ondemand
private void sendSimpleNotificationOndemand() {

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                    MainActivity.this);

    // Titolo e testo della notifica
    notificationBuilder.setContentTitle("Governor Changed");
    notificationBuilder.setContentText("Hai selezionato il governor Ondemand");

    // Testo che compare nella barra di stato non appena compare la notifica
    notificationBuilder.setTicker("Governor Ondemand settato");

    // Data e ora della notifica
    notificationBuilder.setWhen(System.currentTimeMillis());

    // Icona della notifica
    notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

    // Creiamo il pending intent che verrà lanciato quando la notifica
    // viene premuta
    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                    notificationIntent, 0);
   
    notificationBuilder.setContentIntent(contentIntent);

    // Impostiamo il suono, le luci e la vibrazione di default
    notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                    | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

    mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                    notificationBuilder.build());
}

//Notification per il governor interactive
private void sendSimpleNotificationInteractive() {

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                 MainActivity.this);

 // Titolo e testo della notifica
 notificationBuilder.setContentTitle("Governor Changed");
 notificationBuilder.setContentText("Hai selezionato il governor Interactive");

 // Testo che compare nella barra di stato non appena compare la notifica
 notificationBuilder.setTicker("Governor Interactive settato");

 // Data e ora della notifica
 notificationBuilder.setWhen(System.currentTimeMillis());

 // Icona della notifica
 notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

 // Creiamo il pending intent che verrà lanciato quando la notifica
 // viene premuta
 Intent notificationIntent = new Intent(this, MainActivity.class);
 PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 notificationIntent, 0);
 
 notificationBuilder.setContentIntent(contentIntent);

 // Impostiamo il suono, le luci e la vibrazione di default
 notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                 | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

 mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                 notificationBuilder.build());
}

//Notification per il governor conservative
private void sendSimpleNotificationConservative() {

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                 MainActivity.this);

 // Titolo e testo della notifica
 notificationBuilder.setContentTitle("Governor Changed");
 notificationBuilder.setContentText("Hai selezionato il governor Conservative");

 // Testo che compare nella barra di stato non appena compare la notifica
 notificationBuilder.setTicker("Governor Conservative settato");

 // Data e ora della notifica
 notificationBuilder.setWhen(System.currentTimeMillis());

 // Icona della notifica
 notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

 // Creiamo il pending intent che verrà lanciato quando la notifica
 // viene premuta
 Intent notificationIntent = new Intent(this, MainActivity.class);
 PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 notificationIntent, 0);
 
 notificationBuilder.setContentIntent(contentIntent);

 // Impostiamo il suono, le luci e la vibrazione di default
 notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                 | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

 mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                 notificationBuilder.build());
}
}
E' un codice in via di sviluppo non badare a commenti ecc :) ti servealtro? L'altra activity è identica al codice del link

Post unito: 23 Maggio 2013, 23:29:13 CEST
te lo posto lo stesso.
Codice (Java): [Seleziona]
package eu.lucazanini.swipeviews;

import java.io.IOException;
import java.io.InputStream;

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

public class CPUinfo extends Activity {
private TextView cpuInfo;
private TextView memoryInfo;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
        cpuInfo = (TextView) findViewById(R.id.CPUinfo);
        cpuInfo.setText(getCPUinfo());
        memoryInfo = (TextView)findViewById(R.id.memoryinfo);
        memoryInfo.setText(getMemoryInfo());
}

private String getMemoryInfo(){
        ProcessBuilder cmd;
        String result = new String();
       
        try{
        String[] args = {"/system/bin/cat", "/proc/meminfo"};
        cmd = new ProcessBuilder(args);
       
        Process process = cmd.start();
        InputStream in = process.getInputStream();
        byte[] re = new byte[1024];
        while(in.read(re) != -1){
        System.out.println(new String(re));
        result = result + new String(re);
        }
        in.close();
        } catch(IOException ex){
        ex.printStackTrace();
        }
        return result;
        }
        private String getCPUinfo()
        {
        ProcessBuilder cmd;
        String result="";
       
        try{
        String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
        cmd = new ProcessBuilder(args);
       
        Process process = cmd.start();
        InputStream in = process.getInputStream();
        byte[] re = new byte[1024];
        while(in.read(re) != -1){
        System.out.println(new String(re));
        result = result + new String(re);
        }
        in.close();
        } catch(IOException ex){
        ex.printStackTrace();
        }
        return result;
        }
}
« Ultima modifica: 23 Maggio 2013, 23:29:14 CEST da punticci, Reason: Merged DoublePost »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #3 il: 23 Maggio 2013, 23:36:43 CEST »
0
Codice (Java): [Seleziona]
 // Readcpuinfo
        Intent cpuintent = new Intent(this, CPUinfo.class);
        startActivity(cpuintent);
        //fine readcpuinfo
in main activity avvii un'altra activity prima ancora che quella attuale abbia finito di caricarsi......
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #4 il: 24 Maggio 2013, 07:12:56 CEST »
0
Codice (Java): [Seleziona]
 // Readcpuinfo
        Intent cpuintent = new Intent(this, CPUinfo.class);
        startActivity(cpuintent);
        //fine readcpuinfo
in main activity avvii un'altra activity prima ancora che quella attuale abbia finito di caricarsi......
E dove andrebbe allora? se la metto da altre parti mi da errore.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #5 il: 24 Maggio 2013, 09:07:56 CEST »
0
E dove andrebbe allora? se la metto da altre parti mi da errore.
ma scusa, tu stai aprendo un'activity e mentre si apre ne apri un'altra, che senso ha?
non ho idea dove tu possa metterla, l'app è tua, ma è un po come se mentre ti si apre una pagina web, mentre si sta caricando (tipo al 20%) ne apri un'altra (non fai un redirect), che senso ha?
dipende dalla struttura dell'app e da cosa vuoi te il dove metterla.
Ad ogni modo dire "mi da errore" è come dire "boh non va"
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #6 il: 24 Maggio 2013, 09:26:22 CEST »
0
dico una cosa banale ma se non si sa e un casino e puo essere quello che ti confonde, in android poi vedere solo un activity per volta quindi se tu ne apri una seconda fai terminare la prima quindi probabilmente ti collassa l' app

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #7 il: 24 Maggio 2013, 09:32:22 CEST »
0
dico una cosa banale ma se non si sa e un casino e puo essere quello che ti confonde, in android poi vedere solo un activity per volta quindi se tu ne apri una seconda fai terminare la prima quindi probabilmente ti collassa l' app
è che non ne vado fuori.. Avendo il codice qualcuno riesce a capire come potrei fare?

Inviato dal mio Galaxy Nexus con Tapatalk 2


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:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #8 il: 24 Maggio 2013, 09:45:29 CEST »
0
è che non ne vado fuori.. Avendo il codice qualcuno riesce a capire come potrei fare?

Anche avendo il codice, prima è importante che spieghi cosa ti serve che faccia.

Ad esempio: perchè vuoi avviare una activity prima che quella corrente sia stata caricata?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #9 il: 24 Maggio 2013, 09:48:05 CEST »
0
se ho capito tu la seconda activity la usi per effettuare dei calcoli della cpu , a questo punto se vuoi tenerla separata usala come classe e non come activity e cio che vuoi che si veda mettilo tutto nell activity primaria

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #10 il: 24 Maggio 2013, 10:17:36 CEST »
0
Anche avendo il codice, prima è importante che spieghi cosa ti serve che faccia.

Ad esempio: perchè vuoi avviare una activity prima che quella corrente sia stata caricata?
Mi spiego bene..allora, quel codice che ho preso (la activity della CPU) applicata ad un nuovo progetto semplicemente mi fa vedere le info della CPU.quindi apro l app e mi fa vedere tutte le informazioni .se aggregò quel codice alla mia app invece crasha.tutto qui.

Inviato dal mio Galaxy Nexus con Tapatalk 2


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:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #11 il: 24 Maggio 2013, 10:22:12 CEST »
0
Mi spiego bene..allora, quel codice che ho preso (la activity della CPU) applicata ad un nuovo progetto semplicemente mi fa vedere le info della CPU.quindi apro l app e mi fa vedere tutte le informazioni .se aggregò quel codice alla mia app invece crasha.tutto qui.

Allora forse il problema è nella comprensione di cosa è un'activity.

Semplificando molto: una activity è una schermata grafica e può essere attiva solo una schermata grafica (activity) alla volta, per cui non ha alcun senso avere due schermate grafiche attive contemporaneamente, l'unica cosa che puoi fare è riportare nella schermata grafica che ti interessa la parte di codice che nell'altra ti visualizzava le informazioni.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Applicazione crasha all'avvio FATAL EXCEPTION: main
« Risposta #12 il: 24 Maggio 2013, 10:58:20 CEST »
0
Allora forse il problema è nella comprensione di cosa è un'activity.

Semplificando molto: una activity è una schermata grafica e può essere attiva solo una schermata grafica (activity) alla volta, per cui non ha alcun senso avere due schermate grafiche attive contemporaneamente, l'unica cosa che puoi fare è riportare nella schermata grafica che ti interessa la parte di codice che nell'altra ti visualizzava le informazioni.
Ok ok compreso.. Ma anche se inserissi l intero codice nel mio senza creare un'altra activity non mi funziona e crasha. Non saprei come fare :(

Inviato dal mio Galaxy Nexus con Tapatalk 2


Offline punticci

  • Utente junior
  • **
  • Post: 78
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus 4
Re:Applicazione crasha all\\\'avvio FATAL EXCEPTION: main
« Risposta #13 il: 25 Maggio 2013, 18:01:51 CEST »
0
Cavolo infine voglio solo far visualizzare le informazioni della memoria e della cpu..è così complicato?

Inviato dal mio Nexus 4



Post unito: 26 Maggio 2013, 12:08:59 CEST
Allora forse il problema è nella comprensione di cosa è un'activity.

Semplificando molto: una activity è una schermata grafica e può essere attiva solo una schermata grafica (activity) alla volta, per cui non ha alcun senso avere due schermate grafiche attive contemporaneamente, l'unica cosa che puoi fare è riportare nella schermata grafica che ti interessa la parte di codice che nell'altra ti visualizzava le informazioni.
E' quello che ho tentato di fare ma non va :'( Crasha sempre all'avvio.

Post unito: 27 Maggio 2013, 00:02:36 CEST
Vi prego, ho postato il codice della mia app più quello della visualizzazione dei dati della cpu. Chiedo solo un aiuto su come fare per inserire quel codice :( ho fatto cosi ma nulla da fare:
Codice (Java): [Seleziona]
package eu.lucazanini.swipeviews;

import android.annotation.TargetApi;
import android.app.ActionBar;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends FragmentActivity {

    CollectionPagerAdapter mCollectionPagerAdapter;
            ViewPager mViewPager;
            TextView textOut;
            private TextView cpuInfo;
            private TextView memoryInfo;
 // Notification code
        private static final int SIMPLE_NOTIFICATION_ID = 1;
     
     NotificationManager mNotificationManager;
     // fine
     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        @Override
    public void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Readcpuinfo
         TextView CPUinfo = (TextView) findViewById(R.id.CPUinfo);
         CPUinfo.setText(getCPUinfo());
         TextView Memoryinfo = (TextView) findViewById(R.id.memoryinfo);
         Memoryinfo.setText(getMemoryInfo());
        //fine readcpuinfo
        // Notification code
    mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    View btnradio_hindi = findViewById(R.id.radio_hindi);
    // fine
        mCollectionPagerAdapter = new CollectionPagerAdapter(
                getSupportFragmentManager());

        // Set up action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        // Set up the ViewPager, attaching the adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mCollectionPagerAdapter);
    }
     
           
    /// Inizio creazione funzioni
     private String getMemoryInfo(){
                ProcessBuilder cmd;
                String result = new String();
               
                try{
                String[] args = {"/system/bin/cat", "/proc/meminfo"};
                cmd = new ProcessBuilder(args);
               
                Process process = cmd.start();
                InputStream in = process.getInputStream();
                byte[] re = new byte[1024];
                while(in.read(re) != -1){
                System.out.println(new String(re));
                result = result + new String(re);
                }
                in.close();
                } catch(IOException ex){
                ex.printStackTrace();
                }
                return result;
                }
                private String getCPUinfo()
                {
                ProcessBuilder cmd;
                String result="";
               
                try{
                String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
                cmd = new ProcessBuilder(args);
               
                Process process = cmd.start();
                InputStream in = process.getInputStream();
                byte[] re = new byte[1024];
                while(in.read(re) != -1){
                System.out.println(new String(re));
                result = result + new String(re);
                }
                in.close();
                } catch(IOException ex){
                ex.printStackTrace();
                }
                return result;
                }
   

    public Boolean execCommands(String... command) {
            try {
                Runtime rt = Runtime.getRuntime();
                Process process = rt.exec("su");
                DataOutputStream os = new DataOutputStream(process.getOutputStream());

                for(int i = 0; i < command.length; i++) {
                    os.writeBytes(command[i] + "\n");
                    os.flush();
                }
                os.writeBytes("exit\n");
                os.flush();
                process.waitFor();
            } catch (IOException e) {
                return false;
            } catch (InterruptedException e) {
                return false;
            }
            return true;
        }
   
    /**
     * A {@link android.support.v4.app.FragmentStatePagerAdapter} that returns a
     * fragment representing an object in the collection.
     */

    public class CollectionPagerAdapter extends FragmentStatePagerAdapter {

        final int NUM_ITEMS = 3; // number of tabs

        public CollectionPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            Fragment fragment = new TabFragment();
            Bundle args = new Bundle();
            args.putInt(TabFragment.ARG_OBJECT, i);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public CharSequence getPageTitle(int position) {

            String tabLabel = null;
            switch (position) {
            case 0:
                tabLabel = getString(R.string.label1);
                break;
            case 1:
                tabLabel = getString(R.string.label2);
                break;
            case 2:
                tabLabel = getString(R.string.label3);
                break;
            }

            return tabLabel;
        }
    }
   
    /**
     * A dummy fragment representing a section of the app, but that simply
     * displays dummy text.
     */

    public static class TabFragment extends Fragment {

        public static final String ARG_OBJECT = "object";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            Bundle args = getArguments();
            int position = args.getInt(ARG_OBJECT);

            int tabLayout = 0;
            switch (position) {
            case 0:
                tabLayout = R.layout.tab1;
                break;
            case 1:
                tabLayout = R.layout.tab2;
                break;
            case 2:
                tabLayout = R.layout.tab3;
                break;
            }

            View rootView = inflater.inflate(tabLayout, container, false);

            return rootView;
        }
    }
    public void onRadioButtonClicked(View view) {

        ((RadioButton) view).isChecked();

        // Check which radio button was clicked
       // switch(view.getId()) {
       // case R.id.radio_hindi:
        //    if (checked)
       
        switch (view.getId())
        {
        case R.id.radio_hindi:
                String[] commands = {
                                "echo 3 > /proc/sys/vm/drop_caches",
                                "cat /proc/meminfo | awk 'NR == 2'"
                               
            };
                sendSimpleNotification();
                Toast.makeText(this, "Hai liberato memoria! Hai: " + Runtime.getRuntime().freeMemory() + "", Toast.LENGTH_LONG).show();
            execCommands(commands);

            String commandText = "echo 'foo' >> /sdcard/foo.txt\necho 'bar' >> /sdcard/foo.txt";

            execCommands(commandText.split("\n"));
        break;
         
        case R.id.radio_english:
                String[] commands1 = {"echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"};
                execCommands(commands1);
                sendSimpleNotificationOndemand();
                Toast.makeText(this, "Hai selezionato il governor Ondemand", Toast.LENGTH_LONG).show();
        break;
        case R.id.interactive_btn:
                String[] commands2 = {"echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"};
                execCommands(commands2);
                sendSimpleNotificationInteractive();
                Toast.makeText(this, "Hai selezionato il governor: Interactive", Toast.LENGTH_LONG).show();
        break;
        case R.id.conservative_btn:
                String[] commands3 = {"echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
                                "/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"};
                execCommands(commands3);
                sendSimpleNotificationConservative();
                Toast.makeText(this, "Hai selezionato il governor: Conservative", Toast.LENGTH_LONG).show();
        break;
        }
    }
    protected void cancelSimpleNotification() {
        mNotificationManager.cancel(SIMPLE_NOTIFICATION_ID);
}
private void sendSimpleNotification() {

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                        MainActivity.this);

        // Titolo e testo della notifica
        notificationBuilder.setContentTitle("Boost RAM");
        notificationBuilder.setContentText("Memoria libera: "+ Runtime.getRuntime().freeMemory() + "bytes");

        // Testo che compare nella barra di stato non appena compare la notifica
        notificationBuilder.setTicker("Memoria liberata con successo");

        // Data e ora della notifica
        notificationBuilder.setWhen(System.currentTimeMillis());

        // Icona della notifica
        notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

        // Creiamo il pending intent che verrà lanciato quando la notifica
        // viene premuta
        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                        notificationIntent, 0);
       
        notificationBuilder.setContentIntent(contentIntent);

        // Impostiamo il suono, le luci e la vibrazione di default
        notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                        | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

        mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                        notificationBuilder.build());
}
// Notification per il governor ondemand
private void sendSimpleNotificationOndemand() {

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                    MainActivity.this);

    // Titolo e testo della notifica
    notificationBuilder.setContentTitle("Governor Changed");
    notificationBuilder.setContentText("Hai selezionato il governor Ondemand");

    // Testo che compare nella barra di stato non appena compare la notifica
    notificationBuilder.setTicker("Governor Ondemand settato");

    // Data e ora della notifica
    notificationBuilder.setWhen(System.currentTimeMillis());

    // Icona della notifica
    notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

    // Creiamo il pending intent che verrà lanciato quando la notifica
    // viene premuta
    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                    notificationIntent, 0);
   
    notificationBuilder.setContentIntent(contentIntent);

    // Impostiamo il suono, le luci e la vibrazione di default
    notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                    | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

    mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                    notificationBuilder.build());
}

//Notification per il governor interactive
private void sendSimpleNotificationInteractive() {

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                 MainActivity.this);

 // Titolo e testo della notifica
 notificationBuilder.setContentTitle("Governor Changed");
 notificationBuilder.setContentText("Hai selezionato il governor Interactive");

 // Testo che compare nella barra di stato non appena compare la notifica
 notificationBuilder.setTicker("Governor Interactive settato");

 // Data e ora della notifica
 notificationBuilder.setWhen(System.currentTimeMillis());

 // Icona della notifica
 notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

 // Creiamo il pending intent che verrà lanciato quando la notifica
 // viene premuta
 Intent notificationIntent = new Intent(this, MainActivity.class);
 PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 notificationIntent, 0);
 
 notificationBuilder.setContentIntent(contentIntent);

 // Impostiamo il suono, le luci e la vibrazione di default
 notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                 | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

 mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                 notificationBuilder.build());
}

//Notification per il governor conservative
private void sendSimpleNotificationConservative() {

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                 MainActivity.this);

 // Titolo e testo della notifica
 notificationBuilder.setContentTitle("Governor Changed");
 notificationBuilder.setContentText("Hai selezionato il governor Conservative");

 // Testo che compare nella barra di stato non appena compare la notifica
 notificationBuilder.setTicker("Governor Conservative settato");

 // Data e ora della notifica
 notificationBuilder.setWhen(System.currentTimeMillis());

 // Icona della notifica
 notificationBuilder.setSmallIcon(R.drawable.ic_launcher);

 // Creiamo il pending intent che verrà lanciato quando la notifica
 // viene premuta
 Intent notificationIntent = new Intent(this, MainActivity.class);
 PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                 notificationIntent, 0);
 
 notificationBuilder.setContentIntent(contentIntent);

 // Impostiamo il suono, le luci e la vibrazione di default
 notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                 | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

 mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                 notificationBuilder.build());
}
}
« Ultima modifica: 27 Maggio 2013, 00:07:04 CEST da punticci »