如何创建全球课程?

时间:2014-03-25 13:47:56

标签: java android

我有一个课我想成为一个全球课。 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>

3 个答案:

答案 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?