Android - Использование int в разных классах

1

У меня есть int int MASK..

public class Canvastutorial extends Activity {  

 /** Called when the activity is first created. */

    public int MASK=R.drawable.face00;

        public void setMask(int value)
    {
        MASK=value;
    }

его значение изменяется в том же классе Canvastutorial, что и

public void onClick(DialogInterface dialog, int item) 
            {
                if(items[item]=="Mask 1")
                {
                    setMask(R.drawable.face00);
                }
                else if(items[item]=="Mask 2")
                {
                    setMask(R.drawable.face01);
                }
                else if(items[item]=="Mask 3")
                {
                    setMask(R.drawable.face02);
                }
                else if(items[item]=="Mask 4")
                {
                    setMask(R.drawable.face03);
                }
                else if(items[item]=="Mask 5")
                {
                    setMask(R.drawable.face04);
                }

Я хочу использовать эту int MASK в другом классе

public class Panel extends SurfaceView implements SurfaceHolder.Callback{

Я не могу этого сделать. Пока я пытался вызвать MASK как Canvastutorial.ct = new Canvastutorial(); а затем с помощью ct.MASK;

но это принудительно закрыло приложение.

Любые идеи, как это сделать?

  • 0
    Если у вас есть силы близко, пожалуйста, опубликуйте logcat, это очень поможет
Теги:

2 ответа

1

Один из способов сделать это - использовать статический int и статический метод. Доступ к ним можно получить из любого места, используя Canvastutorial.MASK и Canvastutorial.setMask(...). Наверное, не самый чистый подход, но это сработает.

Вы также можете сохранить код так, как он есть сейчас, но создать статический экземпляр этого класса и использовать Canvastutorial.getInstance() для доступа к нему (вместо создания новых классов).

0

Другой подход - использовать ApplicationContext() (по существу глобальный контекст).
Вы объявляете класс контекста приложения следующим образом в манифесте:

<application
    android:name=".model.AppModel">
</application>

Затем вы расширяетесь из класса Application, чтобы сделать свой собственный ApplicationContext Object следующим:

public class AppModel extends Application {
    private User user;

public void setUser(User user) {
    this.user = user;
}
public User getUser() {
    return user;
}

И всякий раз, когда вам нужно получить доступ к объекту, вы делаете это:

AppModel appModel = ((AppModel) getApplicationContext());
appModel.setUser(user);

Вы можете получить доступ к вашему appModel в любом месте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню