我有一个课我想成为一个全球课。 Global类包含我想在Main Activity类中初始化的变量。然后我想从Global类中获取变量的值,并将其设置为在Secondview Class的Textview中显示。我编写了它,但我收到了一个错误。不知道它有什么问题。我将感谢那些试图给出解决方案的人。
这是GlobalClass.java
import android.util.Log;
public class GlobalClass {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
这是MainActivity.java类。在这个类中,我想初始化GlobalClass.java的变量。但是我在这行中得到错误“final GlobalClass test =(GlobalClass)getApplicationContext();”并且错误显示“无法从Context转换为GlobalClass”
public class MainActivity extends Activity {
Button btn;
Context context;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
final GlobalClass test=(GlobalClass)getApplicationContext();//
globalVariable.setName("THis is me");
globalVariable.setEmail("sbd@somewhere");
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(getBaseContext(),SecondScreen.class);
startActivity(intent);
}
});
}
}
这是我的SecondScreen.java类。我想在此类中获取GLobalClass.java中的变量值。
public class SecondScreen extends Activity {
TextView tv;
Button btnButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_screen);
tv= (TextView) findViewById(R.id.tv);
btnButton=(Button) findViewById(R.id.thirdBtn);
final GlobalClass globalVariable=(GlobalClass)getApplicationContext();
final String name= globalVariable.getName();
final String email= globalVariable.getEmail();
String print= "Name: "+name+" Email:"+email;
tv.setText(print);
btnButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent= new Intent(getBaseContext(),ThirdScreen.class);
startActivity(intent);
}
});
}
}
这是我的清单类
?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arifhaq.testexample"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:name="com.arifhaq.testexample.GlobalClass"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.arifhaq.testexample.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.arifhaq.testexample.SecondScreen"
android:label="@string/title_activity_second_screen" >
</activity>
<activity
android:name="com.arifhaq.testexample.ThirdScreen"
android:label="@string/title_activity_third_screen" >
</activity>
</application>
</manifest>
答案 0 :(得分:1)
全局类需要扩展应用程序。您可以执行以下操作。
public class GlobalClass extends Application {
public static GlobalClass instance;
public void onCreate() {
instance = getApplication();
}
}
答案 1 :(得分:0)
通常在应用程序的开始时初始化变量和内容,以确保不使用未初始化的变量。 您可以使用onCreate()在androit中执行此操作 http://developer.android.com/reference/android/app/Application.html#onCreate()
答案 2 :(得分:0)
您应该让全局类扩展Application。
这里可以找到一个广泛的答案:
How to declare global variables in Android?