2016-08-27 15 views
-1

Ich möchte eine Quiz-App erstellen, bei der meine Bewertungsvariable in jeder Aktivität vererbt werden soll.Vererbung in Java (Android Studio)

Ich weiß nicht, wie ich diese Aufgabe ausführen soll.

Hier ist meine MainActivity Code, wo ich die globale Variable deklariert.

package com.example.vidit.project3; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public int score=0; 

public void start(View v) 
{ 
    Intent intent = new Intent(this,question1.class); 
    startActivity(intent); 
} 


} 

Hier ist die Klasse, in der ich möchte es erben:

package com.example.vidit.project3; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 



public class question1 extends MainActivity { 

MainActivity ma= new MainActivity(); 
ma.score; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_question1); 
} 
} 

Hilfe geschätzt wird!

+1

Was ist Ihre Frage? – SamTebbs33

+1

Zuerst erstellen Sie nie eine neue Aktivität mit new. Sie müssen startActivity verwenden. Zweitens - ich glaube nicht, dass Sie verstehen, was Vererbung macht. Es sieht eher so aus, als ob Sie den Wert der Variablen teilen möchten. Das ist nicht was Vererbung tut. Drittens gibt es keinen Grund, für jede Frage eine andere Aktivitätsklasse zu haben. –

Antwort

4

In Android wird es nicht empfohlen, dass Sie Variablen verwenden, um Daten über eine Anwendung zu speichern (es ist auch nicht möglich, dies mit Vererbung zu tun), das ist schlechte Praxis.

Was Sie versuchen zu tun:

  1. Shop einige int als score in einer übergeordneten Klasse
  2. In der Unterklasse erben dass score etwas zu tun

Warum Dies ist ein Problem:

Zunächst erben diese score können Sie es in keiner Weise in einer Unterklasse ändern. Java erlaubt Ihnen nicht, Werte eines geerbten Feldes zu überschreiben. Siehe this für Informationen. Zweitens ist das Erstellen einer Vererbungsbeziehung zwischen Klassen, nur um einige Daten zu erhalten, sehr sinnlos ... Weil die Vererbung alles von der Elternklasse erbt, was nicht das ist, was Sie brauchen.

Lösung:

Stattdessen Android-APIs verfügen über Funktionen wie SharedPreferences und SQLite, die Optionen zum Speichern von Daten.

Warum?

Da diese Daten in SharedPreferences oder SQLite Speicherung kann fast als es in einer globalen Variablen speichern gesehen werden, damit Sie in Ihrer Anwendung zu verwenden, wann immer Sie es brauchen. Es ist Speicher, der Ihnen Lese-/Schreibzugriff gewährt, wann immer Sie möchten, und wird nicht zerstört, wenn Ihre Anwendung geschlossen wird. Weitere Informationen zu den Speicheroptionen von Android finden Sie unter this.