2017-01-22 2 views
0

Ich bin Anfänger in Android Dev und ich erstelle ein Pizza Clicker Spiel, genau wie Cookie Clicker. Ich habe eine Aktivität für Upgrades erstellt und für die Aktualisierung benötigst du eine gewisse Menge an Pizza. Wenn du 10 Pizzas hast, kannst du upgraden. Wenn die Anzahl der Pizzas gleich dem Preis ist, für den die Schaltfläche aktiviert ist, ist die Schaltfläche nicht aktiviert. Wenn ich auf die Schaltfläche klicke, wird die Menge an Pizza verringert und der Button sollte wieder deaktiviert werden, aber es wird nicht deaktiviert.Button deaktiviert nicht in einer anderen Aktivität

Hier ist die erste Aktivität:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

public static int pizza = 0; 
public static TextView pizzaContText, helpers; 
public static Button add, upgrades, exit; 


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

private void initialize() { 
    add = (Button) findViewById(R.id.makePizza); 
    exit = (Button) findViewById(R.id.exitButton); 
    upgrades = (Button) findViewById(R.id.upgrades); 

    pizzaContText = (TextView) findViewById(R.id.pizzas); 
    helpers = (TextView) findViewById(R.id.helpers); 

    pizzaContText.setText("Pizzas: " + pizza); 
    pizzaContText.setTextColor(Color.BLACK); 
    pizzaContText.setTextSize(40); 

    helpers.setText("Helpers: " + Upgrades.contHelper); 
    helpers.setTextSize(20); 
    helpers.setTextColor(Color.BLACK); 

    add.setOnClickListener(this); 
    upgrades.setOnClickListener(this); 
    exit.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.makePizza: 
      pizza++; 
      pizzaContText.setText("Pizzas: " + pizza); 
      pizzaContText.setTextColor(Color.BLACK); 
      pizzaContText.setTextSize(40); 
      break; 

     case R.id.upgrades: 
      Intent i = new Intent(getApplicationContext(), Upgrades.class); 
      startActivity(i); 
      break; 

     case R.id.exitButton: 
      finish(); 
      System.exit(0); 
      break; 
    } 
} 

}

Und hier ist die zweite Aktivität (Upgrades):

public class Upgrades extends AppCompatActivity implements View.OnClickListener{ 

public static int contHelper = 0, priceHelper = 10; 
Button addHelper, back; 
Handler h = new Handler(); 

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


    if (MainActivity.pizza >= priceHelper){ 
     //ENABLES THE BUTTON 
     addHelper.setEnabled(true); 
    } else{ 
     //DISABLE THE BUTTON 
     addHelper.setEnabled(false); 
    } 
} 

private void initialize() { 
    addHelper = (Button) findViewById(R.id.addHelper); 
    addHelper.setText("Helper: " + priceHelper + " pizzas"); 
    back = (Button) findViewById(R.id.back); 

    addHelper.setOnClickListener(this); 
    back.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.addHelper: 
      MainActivity.pizza-=priceHelper; 
      addHelper.setText("Helper: " + priceHelper + " pizzas"); 
      priceHelper+=4; 
      contHelper++; 

      //Auto clicks the make pizza button every 1 sec 
      final Runnable r = new Runnable() { 
       @Override 
       public void run() { 
        MainActivity.add.performClick(); 
        h.postDelayed(this, 1000); 
       } 
      }; 
      h.postDelayed(r, 1000); 
      break; 

     case R.id.back: 
      Intent i = new Intent(getApplicationContext(), MainActivity.class); 
      startActivity(i); 
      break; 
    } 
} 

}

+1

welche Codezeile deaktiviert Ihre Taste, bitte identifizieren Sie sie –

Antwort

0

nicht statische Objekte anwenden. Ist das Schlimmste, was Sie tun können .. Verwenden Sie Bundle, um Ihre Variable

012 zu senden
Intent activity = new Intent(this, Upgrades.class); 
activity.putExtra("pizza", pizza); 
startActivity(intent); 

Und in Ihrer Tätigkeit Upgrades verwenden

Bundle extras = getIntent().getExtras(); 
int pizza = extras.getInt("pizza"); 

Und für NULL-Werte überprüfen und dass Sie die richtigen Dinge senden.

+0

Ich habe getan, was Sie sagten, aber die App funktioniert nicht mehr, wenn ich versuche, auf Upgrades Aktivität –

+0

Does ist egal. Der Android-Lebenszyklus könnte sich von Telefon zu Telefon unterscheiden. Statisch ist das Schlimmste. Aber mach was du willst .. –

Verwandte Themen