Установите StaticClass для сохранения моего текущего Button, установленного на Visible с GUI Handler

Я запутался с кодом StaticClass, который дал мой друг, чтобы использовать обработчик GUI для альтернативного сохранения помимо общих настроек

У меня был следующий код в моем selectlevel.class

public class selectlevel extends Activity {

    Button f1, f2, f3;
    ImageView f2lock, f3lock;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.selectlevel);

        f1 =(Button)findViewById(R.id.f1);      
        f1.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v){
               // TODO Auto-generated method stub
            Intent level1 = new Intent ();
            level1.setClassName ("com.example.game", "com.example.game.levelone");
            startActivity (level1);              
                }             
          });       
        }            

        f2=(Button)findViewById(R.id.f2);      
        f2lock=(ImageView)findViewById(R.id.f2lock);

        f2.setOnClickListener(new View.OnClickListener() {

             @Override
             public void onClick(View v){
                 // TODO Auto-generated method stub
                 Intent level2 = new Intent ();
                 level2.setClassName ("com.example.game", "com.example.game.leveltwo");
                 startActivity (level2);                 
             }            
         });
    }
}

поэтому мой друг дал код StaticClass с обработчиком GUI, чтобы сделать кнопку VISIBLE, когда последний уровень finish(); и сохранить его

это следующий код

static class PlayerProgress {
    // We set progress to static, so it would be alive, no matter what activity you're in.
    private static int progress = 1;
     /**
     * Update the player's progress.
     * @param levelNumber: latest level number.
     */
    public static void updateProgress(int levelNumber) {
        progress = levelNumber;
    }

    /**
     * Get the player's progress.
     * @return the latest level number.
     */
    public static int getPlayerProgress() {
        return progress;
    }
}

/**
 * The gui handler would need to be called, every time you need to update the screen to the
 * appropriate level and it's assets. (Buttons, activities ect.)
 * 
 * I would implement a MainActivity, which would handle the different screens. 
 *
 */

class guiHandler {
    public void updateLevel() {
        int progress = PlayerProgress.getPlayerProgress();
        /*
         * Add your 
         */
        switch(progress) {
        case 1:
             f2.setVisibility(View.VISIBLE);
             f2lock.setVisibility(View.GONE);
            break;
        case 2:
             f3.setVisibility(View.VISIBLE);
             f3lock.setVisibility(View.GONE);
            break;

        // You can expand this to as many levels you'd like. 
        }
    }
}

Я просто запутался, как объединить мой код и код StaticClass, полученный от моего друга, чтобы сохранить кнопку "Видимость" после завершения последнего уровня

Может кто-нибудь помочь мне с кодом?

ОБНОВИТЬ

я сделал изменения с моим кодом, как это

   f1=(Button)findViewById(R.id.f1);
       f1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v){
                    // TODO Auto-generated method stub
                    Intent level1 = new Intent ();
                    level1.setClassName ("com.example.game", "com.example.game.levelone");
                    startActivity (level1);              
                }             
            }); 

        f2=(Button)findViewById(R.id.f2);
        f2lock=(ImageView)findViewById(R.id.f2lock);
        f2.setOnClickListener(new View.OnClickListener() {

             @Override
             public void onClick(View v){
               // TODO Auto-generated method stub
                Intent level2 = new Intent ();
                level2.setClassName ("com.example.game", "com.example.game.leveltwo");
                startActivity (level2);              
                }             


          });
            updateLevels();
    }

    static class PlayerProgress {

        private static int progress = 0;

        public static void updateProgress(int levelNumber) {
            progress = levelNumber;
        }


        public static int getPlayerProgress() {
            return progress;
        }
    }

    public void updateLevels() {
        int progress = PlayerProgress.getPlayerProgress();


    switch(progress) {
        case 1:
            f2.setVisibility(View.VISIBLE);
            f2lock.setVisibility(View.GONE);
            break;
        case 2:

            break;

        // You can expand this to as many levels you'd like.
    }
  }

и использовать это в моем levelone.class

button1.setOnClickListener(new View.OnClickListener() {

          public void onClick(View v){
              selectlevel.PlayerProgress.updateProgress(1);
              finish(); 

когда levelone.class финишная кнопка f2 все еще ушла, как это исправить?

1 ответ

Решение

Итак, вы можете использовать этот код

selectlevel.java

package com.example.myapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class selectlevel extends Activity {

    Button f1, f2, f1lock, f2lock;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.selectlevel);

        f1 = (Button) findViewById(R.id.f1);
        f1lock = (Button) findViewById(R.id.f1lock);
        f1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent level1 = new Intent();
                level1.setClassName("com.example.myapp", "com.example.myapp.levelone");
                startActivity(level1);
            }
        });

        f2 = (Button) findViewById(R.id.f2);
        f2lock = (Button) findViewById(R.id.f2lock);
        f2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent level2 = new Intent();
                level2.setClassName("com.example.myapp", "com.example.myapp.leveltwo");
                startActivity(level2);
            }
        });

        updateLevels();
    }

    static class PlayerProgress {
        // We set progress to static, so it would be alive, no matter what activity you're in.
        private static int progress = 0;

        /**
         * Update the player's progress.
         *
         * @param levelNumber: latest level number.
         */
        public static void updateProgress(int levelNumber) {
            progress = levelNumber;
        }

        /**
         * Get the player's progress.
         *
         * @return the latest level number.
         */
        public static int getPlayerProgress() {
            return progress;
        }
    }

    public void updateLevels() {
        int progress = PlayerProgress.getPlayerProgress();

        switch (progress) {
            case 0:
                f1.setVisibility(View.VISIBLE);
                f1lock.setVisibility(View.GONE);
                f2.setVisibility(View.GONE);
                f2lock.setVisibility(View.VISIBLE);
                break;

            default:
                f1.setVisibility(View.VISIBLE);
                f1lock.setVisibility(View.GONE);
                f2.setVisibility(View.VISIBLE);
                f2lock.setVisibility(View.GONE);
                break;
        }
    }
}

selectlevel.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
    >

    <Button
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:id="@+id/f1"
        android:text="Level 1"/>

    <Button
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:id="@+id/f1lock"
        android:text="Level 1 disabled"/>

    <Button
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:id="@+id/f2"
        android:text="Level 2"/>

    <Button
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:id="@+id/f2lock"
        android:text="Level 2 disabled"/>
</LinearLayout>

И на вашем уровне прогресс обновления активности

levelone.java

package com.example.myapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class levelone extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.levelone);
        Button finishf1 = (Button) findViewById(R.id.finishf1);
        finishf1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectlevel.PlayerProgress.updateProgress(1);
                startActivity(new Intent(levelone.this, selectlevel.class));
            }
        });
    }
}

levelone.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
    >

    <Button
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:id="@+id/finishf1"
        android:text="Finish Level 1"/>

</LinearLayout>
Другие вопросы по тегам