Autore Topic: Schermata vuota al rilancio di un'activity  (Letto 719 volte)

Offline ms92ita

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Schermata vuota al rilancio di un'activity
« il: 24 Luglio 2012, 18:00:07 CEST »
0
Salve a tutti,
cercando di passare all'activity precedente con alcuni dati extra implementati nell'intent di "lancio" oppure anche utilizzando il solo this.finish(), mi fa venire fuori la schermata vuota senza far vedere alcun dato. In pratica ho un'activity che lancia sottoattività da cui alla fine di essa, deve prendere alcuni dati, solo che cercando di tornare indietro dalla sotto-attività all'activity "principale" appunto viene fuori tutto nero... non da nessun errore di compilazione neppure in modalità debug e sull'activity principale ho fatto l'oveeride dell'onResume() con la chiamata del suo super, visto che appunto terminata la sottoattività deve far vedere i dati aggiornati.

Vi posto i codici in esame e se serve anche del manifest:

Codice (Java): [Seleziona]
public class GameCreater extends Activity implements OnClickListener {
       
        int loop, type;
        int[] totalPoints;
        LinearLayout over,under;
        Button start;
        TextView instruction,difficulty;
        TypedArray examples;
        String[] instructions,difficult;
        boolean anotherGame;
        private TextView instruction1;
        private TextView difficulty1;
        Animation anim;
        private Intent extras;
        SharedPreferences sp;
        private int players;
        private int level;
       
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.gamecreater);
                over=(LinearLayout) this.findViewById(R.id.overInstruction);
                under=(LinearLayout) this.findViewById(R.id.underInstruction);
                start=(Button) this.findViewById(R.id.start);
                instruction=new TextView(this);
                difficulty=new TextView(this);
                instruction1=new TextView(this);
                difficulty1=new TextView(this);
                instruction.setGravity(Gravity.CENTER);
                instruction1.setGravity(Gravity.CENTER);
                difficulty.setGravity(Gravity.CENTER);
                difficulty1.setGravity(Gravity.CENTER);
                instruction.setPadding(0, 0, 0, 10);
                instruction1.setPadding(0, 0, 0, 10);
                difficulty.setPadding(0, 0, 0, 10);
                difficulty1.setPadding(0, 0, 0, 10);
                start.setOnClickListener(this);
                over.addView(instruction);
                over.addView(difficulty);
                under.addView(instruction1);
                under.addView(difficulty1);
                sp=this.getSharedPreferences("Testyourreaction_preferences", 0);
                extras=this.getIntent();
                instructions=getResources().getStringArray(R.array.instructions);
                examples=getResources().obtainTypedArray(R.array.examples);
                anim=AnimationUtils.loadAnimation(this, R.anim.createrrotation);
                players=extras.getIntExtra("Players", 1);
                totalPoints=new int[players];
                for(int i=0;i<totalPoints.length;i++) {
                        totalPoints[i]=0;
                }
                int resource;
                if(level==0)
                        resource=R.array.difficulty_easy;
                else if(level==1)
                        resource=R.array.difficulty_medium;
                else
                        resource=R.array.difficulty_hard;
                difficult=getResources().getStringArray(resource);
                anotherGame=true;
                loop=sp.getInt("GameLoop", 0);
        }
       
        public void onResume() {
                super.onResume();
                for(int i=0;i<totalPoints.length;i++) {
                        int points=extras.getIntExtra("Player"+(i+1), 0);
                        totalPoints[i]=points;
                        System.out.println("Player"+(i+1)+":"+totalPoints[i]);
                }
                type=(int)((Math.random()*10)+1);
                instruction.setText(instructions[type-1]);
                difficulty.setText(getResources().getString(R.string.difficulty)+" "+difficult[type-1]);
                instruction1.setText(instructions[type-1]);
                difficulty1.setText(getResources().getString(R.string.difficulty)+" "+difficult[type-1]);
                over.setAnimation(anim);
                loop--;
                if(loop==0) {
                        anotherGame=false;
                }
        }
       
        public void onStop() {
                super.onStop();
                if(!anotherGame) {
                        System.out.println("finish");
                        finish();
                }
        }

        @Override
        public void onClick(View arg0) {
                Intent intent=new Intent(getApplicationContext(), ReactionActivity.class);
                intent.putExtra("Type",type);
                intent.putExtra("AnotherGame", anotherGame);
                intent.putExtra("Players", players);
                intent.putExtra("Level", level);
                for(int i=0;i<totalPoints.length;i++)
                        intent.putExtra("Player "+i, totalPoints[i]);
                this.startActivity(intent);
        }
}


Codice (Java): [Seleziona]
public class ReactionActivity extends Activity implements OnClickListener {

.....

public void onClick(View arg0) {
                if(finish) {
                        Bundle b=new Bundle();
                        for(int i=0;i<players;i++) {
                                int point=getIntent().getIntExtra("Player"+(i+1), 0);
                                b.putInt("Player"+(i+1), point+points[i]);
                        }
                        Intent in;
                        if (anotherGame) {
                                in=new Intent(ReactionActivity.this, GameCreater.class);
                                in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        } else {
                                in = new Intent(ReactionActivity.this, FinalResult.class);
                        }
                        in.putExtras(b);
                        startActivity(in);
                } else {
                        ...
                }
        }
}

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="reaction.mainproject"
   android:versionCode="1"
   android:versionName="1.0" >
   
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" />
    <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name" >
       
        <activity android:name=".MainMenu" android:label="@string/app_name"
            android:screenOrientation="landscape">
                        <intent-filter>
                                <action android:name="android.intent.action.MAIN" />
                                <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                </activity>
               
        <activity android:name=".Options" android:label="@string/app_name"
            android:screenOrientation="landscape">
            </activity>
           
        <activity android:name=".Settings" android:label="@string/app_name"
            android:screenOrientation="landscape">
            </activity>
           
        <activity android:name=".RecordScreen" android:label="@string/app_name"
            android:screenOrientation="landscape">
            </activity>
       
        <activity android:name=".NewGame" android:label="@string/app_name"
            android:screenOrientation="landscape">
            </activity>
           
        <activity android:name=".GameCreater" android:label="@string/app_name"
            android:screenOrientation="portrait">
        </activity>
       
        <activity android:name=".ReactionActivity" android:label="@string/app_name"
            android:screenOrientation="portrait">
        </activity>
       
        <activity android:name=".FinalResult" android:label="@string/app_name"
            android:screenOrientation="portrait">
        </activity>    
               
    </application>

</manifest>


ho fatto vari tipi di "debug" con System.out.println(...); per vedere se almeno lanciava qualcosa ma nulla, deserto totale xD

jfrankie

  • Visitatore
Re:Schermata vuota al rilancio di un'activity
« Risposta #1 il: 07 Agosto 2012, 10:23:51 CEST »
0
Se ti aspetti che la seconda Activity ritorni qualcosa allora invece di chimarla con startActivity puoi chimarla startActivityForResult.