2016-07-22 12 views
2

mit einigen Schwierigkeiten bekommen 2 Tasten zu arbeiten.Android: Ändern und Begrenzen der Schaltfläche klicken

In der Abbildung unten mache ich 2 Tasten mit der Bezeichnung NEXT & BACK. Und mit diesen Schaltflächen kann der Benutzer zwischen Woche 1 und Woche 3 wechseln. Wenn sie auf NEXT klicken und Week erreichen, muss ich die Schaltfläche deaktivieren, damit sie nicht weiterarbeiten können, da sie maximal 3 Wochen dauert. Das selbe gilt für die BACK-Taste und das Durchlaufen und Erreichen von Woche 1. Siehe auch unten für meinen Code.

http://i.stack.imgur.com/fLazK.jpg

import android.content.Intent; 
import android.content.SharedPreferences; 
import android.media.Image; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity { 

    final String PREFS_NAME = "MyPrefs"; 
    ViewPager viewPager; 
    String week1 = "1"; 
    String week2 = "2"; 
    String week3 = "3"; 
    private int[] weekNumbers = {1, 2, 3}; 
    int weekNumberCounter = 0; 

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

     //Casting variables 

     viewPager = (ViewPager) findViewById(R.id.pager); 
     viewPager.setAdapter(new MyAdapter(getSupportFragmentManager())); 

     //////// First startup screen after first time use 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     if (settings.getBoolean("my_first_time", true)) { 


      Intent VirginBoot = new Intent(this, Begin_Program.class); 
      startActivity(VirginBoot); 

      // Record the fact that the app has been started at least once 
      settings.edit().putBoolean("my_first_time", false).apply(); 
     } 
    } 


    public void settingsButton(View view) { 

     Intent i = new Intent(this, Settings.class); 
     startActivity(i); 
    } 


    public void NextWeek(View view) { 
     int weekCounter = 0; 
     TextView weekNumber = (TextView) findViewById(R.id.week_number_text); 
     ImageButton LastWeekButton = (ImageButton) findViewById(R.id.LastWeek); 
     ImageButton NextWeekButton = (ImageButton) findViewById(R.id.NextWeek); 

     switch (view.getId()) { 
      case R.id.NextWeek: 

       if (weekCounter < (weekNumbers.length) - 2) { 
        weekCounter++; 
        weekNumber.setText(week2); 


        if (weekCounter == (weekNumbers.length) - 1) { 

         weekNumber.setText(week3); 
         LastWeekButton.setClickable(true); 
         NextWeekButton.setClickable(false); 
        } 
       } 


      case R.id.LastWeek: 
       if (weekCounter > weekNumbers.length) { 
        weekCounter--; 
        weekNumber.setText(week2); 

        if (weekCounter == (weekNumbers.length) - 1) { 
         weekNumber.setText(week1); 
         NextWeekButton.setClickable(true); 
         LastWeekButton.setClickable(false); 
        } 
       } 
       break; 


     } 


    } 


    class MyAdapter extends FragmentPagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int arg0) { 
      Fragment fragment = null; 
      if (arg0 == 0) { 
       fragment = new Day_1(); 
      } 
      if (arg0 == 1) { 
       fragment = new Day_2(); 
      } 
      if (arg0 == 2) { 
       fragment = new Day_3(); 
      } 
      if (arg0 == 3) { 
       fragment = new Day_4(); 
      } 


      return fragment; 
     } 

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

    } 

} 

Vielleicht in den falschen Bereichen ich suche, aber ich habe die Links unten versucht und sie haben bisher gearbeitet.

How to disable button click? How to disable button as soon as its clicked Click Limiting on <button>

+0

Ihre Logik, die bestimmt, wann sie deaktiviert und wann sie aktiviert werden soll, ist wahrscheinlich nicht korrekt. –

+0

posten Sie Ihr XML-Layout auch hier – Manishika

Antwort

0

Zunächst einmal sollten Sie wahrscheinlich in Ihrer Klasse speichern Sie Ihre Tasten als Felder, anstatt sie jedes Mal Ihre Funktionen aufgerufen zu finden sind, so dass sie das erste Mal in der Tätigkeit onCreate() statt finden . Dann können Sie in der Schaltfläche OnClick Ihrer Schaltfläche setEnabled (false) auf dieser Schaltfläche aufrufen, abhängig davon, ob die Schaltfläche weiterhin aktiviert sein soll.

Verwandte Themen