У меня есть 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;
но это принудительно закрыло приложение.
Любые идеи, как это сделать?
Один из способов сделать это - использовать статический int и статический метод. Доступ к ним можно получить из любого места, используя Canvastutorial.MASK и Canvastutorial.setMask(...). Наверное, не самый чистый подход, но это сработает.
Вы также можете сохранить код так, как он есть сейчас, но создать статический экземпляр этого класса и использовать Canvastutorial.getInstance() для доступа к нему (вместо создания новых классов).
Другой подход - использовать 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 в любом месте.