Android - 在不同的类中使用int

时间:2011-07-04 10:02:59

标签: android

我有这个MAS MAS ..

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);
                }

我想在其他类

中使用这个MASK
public class Panel extends SurfaceView implements SurfaceHolder.Callback{

我无法这样做..到目前为止,我试图将MASK称为 Canvastutorial.ct = new Canvastutorial(); 然后使用ct.MASK;

但这迫使关闭申请..

任何想法怎么做?

2 个答案:

答案 0 :(得分:1)

一种方法是使用静态int和静态方法。可以使用Canvastutorial.MASK和Canvastutorial.setMask(...)从任何地方访问它们。可能不是最干净的方法,但它会起作用。

您也可以保留现在的代码,但是创建该类的静态实例,并使用Canvastutorial.getInstance()来访问它(而不是创建新类)。

答案 1 :(得分:0)

另一种方法是使用ApplicationContext()(本质上是一个全局上下文) 您在清单中声明了这样的应用程序上下文类:

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

然后从Application类扩展以生成自定义ApplicationContext对象,如下所示:

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。