android - 使用全局变量

标签 android variables global

我知道这个问题已被问过一百万次,因为我做了一些研究并发现了很多与此相关的话题。我曾尝试使用这些线程中的答案,但遇到了一些麻烦。

我希望设置一些我可以在所有 Activity 中使用的变量。

我创建了一个 GlobalVariables.java 类,如下所示(其中的值目前仅用于测试目的):

import android.app.Application;

public class GlobalVariables extends Application {

int holeAmount;

public int getHoles(){
    return holeAmount;
  }
  public void setHoles(String s){
    holeAmount = 30;
  }

}

在我发生一切的主要 Activity 中,我有以下内容:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    GlobalVariables global = ((GlobalVariables)getApplicationContext());
    int totalHoles = global.getHoles();

在“GlobalVariables global = ...”行我收到以下错误:

Multiple markers at this line
- GlobalVariables cannot be resolved 
 to a type
- GlobalVariables cannot be resolved 
 to a type

我尝试按照此处的说明进行操作,但显然我做错了什么。 > How to declare global variables in Android?

如有任何帮助,我们将不胜感激!

谢谢!



第二次尝试:

EasyPar.java(错误@EasyParHelperActivity)

package com.movi.easypar;

import java.text.DateFormat;
import java.util.Date;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class EasyPar extends Activity implements OnClickListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

(initialize all my buttons and textviews)
}

public void someMethod() {
    EasyParHelperActivity.helper.setHoles(30);
    int holes = EasyParHelperActivity.helper.getHoles();
}

(the rest of my button functions, etc.)

EasyParHelperActivity(无错误)

package com.movi.easypar;

import android.app.Application;

public class EasyParHelperActivity extends Application {

public static EasyParHelper helper = new EasyParHelper();

}

EasyParHelper.java(无错误)

package com.movi.easypar;

public class EasyParHelper {

private int holeAmount = 0;

public int getHoles() {
    return holeAmount;
}

public void setHoles(int holes) {
    holeAmount = holes;
}
}

我想要的只是让用户能够在第一个屏幕上单击按钮“18”或“9”,并且应用程序能够在其他任何时候使用该值。所以我需要在屏幕 1 中设置它,在屏幕 2 中我需要检索该值。

最佳答案

按如下方式创建一个“助手”类...

package com.my.application

public class MyAppHelper {

    private int holeAmount = 0;

    public int getHoles() {
        return holeAmount;
    }

    public void setHoles(int holes) {
        holeAmount = holes;
    }
}

然后为您的应用程序类执行以下操作...

package com.my.application

public class MyApplication extends Application {

    public static MyAppHelper helper = new MyAppHelper();

}

要访问助手中的 get/set 方法,您只需调用...

package com.my.application

public class MyActivity extends Activity {

    // Normal onCreate(...) etc here

    public void someMethod() {
        MyApplication.helper.setHoles(30);
        int holes = MyApplication.helper.getHoles();
    }
}

关于android - 使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480411/

相关文章:

php - 如何从字符串中提取特定变量?

java - Vista 的全局应用程序数据放在哪里?

xcode - Swift 中的可变全局变量

android - Ionic App v1 - 更新 Ionic Framework 版本(不是 Ionic CLI)

android - 更改 CheckBox 在 RecyclerView 中用动画选中

shell - 如何将 sed 的输出读取到变量中

variables - Ada:如何访问这个变量?

ruby-on-rails - Rails 在哪里放置一个在所有模型中使用的方法

android - 替换 API 10 的resolveSizeAndState?

Android ListView 未正确映射