我已经设置了一个包含各种全局变量的Java类:
class GlobalClass extends Application {
int global_counter;
String FileNameSmall[] = {"simage2", "simage1", "simage3"};
String FileName[] = {"image2", "image1", "image3"};
String Answers[] = {"blah1", "blah2", "blah3"};
}
全局计数器用于计算数组。当我在一个活动中更新它时:
GlobalClass global = new GlobalClass();
global.global_counter = global.global_counter + 1;
它在该活动中运作良好。然而,如果我使用新的XML格式等开始一个新活动,那么声明使用全局变量它不会返回附加量,它返回到0。
我仍然是所有这个java的新手所以请耐心等待。我缺少一些基本的东西,如我的全球玻璃的android清单中的参考,或者我必须声明globalClass global = newGlobal();在extends活动类中?
任何帮助都会很棒
干杯
答案 0 :(得分:1)
您需要将变量声明为static
成员。这样他们在整个应用程序中具有相同的值:
public static int global_counter;
public static String FileNameSmall[] = {"simage2", "simage1", "simage3"};
public static String FileName[] = {"image2", "image1", "image3"};
public static String Answers[] = {"blah1", "blah2", "blah3"};
p.s。:您还可以按照Java Singleton模式生成一个GlobalClass
实例,或者将第一个创建的intance从一个活动传递到下一个活动。
希望这有帮助......干杯!
答案 1 :(得分:0)
当用户点击创建新屏幕并显示它的按钮时,您必须使用Activity.putExtra
在活动之间传递任何变量或信息,如下所示:
startForm.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if ((!selectedFormCode.equalsIgnoreCase("")) && (!userCode.getText().toString().equals("")))
{
Intent questionScreen = new Intent();
questionScreen.setClassName("com.android.artemis", "com.android.artemis.QuestionScreen");
func.ShowMessage("Loading Screen...");
// send preview config to next screen
questionScreen.putExtra("formProperties", formProperties.toString());
questionScreen.putExtra("selectedFormCode", selectedFormCode);
questionScreen.putExtra("selectedRegionCode", selectedRegionCode);
questionScreen.putExtra("selectedSubRegionCode", selectedSubRegionCode);
questionScreen.putExtra("selectedRegionLabel", selectedRegionLabel);
questionScreen.putExtra("selectedSubRegionLabel", selectedSubRegionLabel);
questionScreen.putExtra("userRegistrationCode", userCode.getText().toString());
startForm.setEnabled(false); // evita que o usuário clique mais de uma vez
startActivity(questionScreen);
startForm.setEnabled(true);
}
else
{
func.ShowMessage("Complete todas as Informações antes de Continuar!");
}
}
});
这样您只会发送您使用下一个屏幕的信息。
答案 2 :(得分:0)
请确保以下事项:
您的Application
扩展程序类(GlobalClass
)在清单XML中被引用,如下所示:<application android:name=".GlobalClass">
当您需要获取对Application对象的引用时,请从您的活动中运行函数getApplication()
。您可以将其转换为GlobalClass
。手动创建它的新实例不正确(GlobalClass global = new GlobalClass()
)。
您的应用程序对象是单例,因此您的变量不需要是静态的。
如果您不想使用系统的应用程序对象机制,请使用术语singleton
并实施一个。单例是一个全局对象,可以在任何地方访问,只有一个实例并且可以保存全局变量。