java - 使用类而不创建它的新实例

标签 java android

对于 Java 来说是新手,对于 Android 开发来说也是新手。

我已遵循以下教程 - Android tutorial (Basic Hello World App)我现在稍微改变它作为概念证明。

基本上我想使用我创建的类,但我遇到了一些困难。该类如下所示。

public class Employee {

    private HashMap<String, String> employees = new HashMap<>();

    public void setEmployees(String name, String jobTitle) {
        employees.put(name, jobTitle);
        System.out.println(employees);
    }

    public String getEmployees(String name){
        return employees.get(name);
    }

}

我从 MainActivity.java 填充 HashMap。使用上面的 set 方法,这可以按预期工作。我已经测试过了,可以看到 HashMap 具有所需的条目数。

我的问题是取回数据时。我如何使用该类。我有一个文件名 DisplayMessageActivity.java 以及其中的以下代码。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;


public class DisplayMessageActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);

        // Get the Intent that started this activity and extract the string
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        // Capture the layout's TextView and set the string as its text
        TextView employee_name = findViewById(R.id.employee_Name);
        employee_name.setText(message);
        TextView employee_title = findViewById(R.id.employee_Title);
        employee_title.setText(employee.getEmployees(message));
    }
}

最后一行是我收到错误的地方。这是因为它不知道employee 是什么。我想我需要添加:

Employee employee = new Employee;

如果我在 onCreate 方法中添加它,它会创建一个新实例,因此它具有新值。我还在 onCreate 上方添加了它,结果相同。

我错过了什么?

最佳答案

要保留数据,您需要将变量和方法设为静态

public class Employee {

private static HashMap<String, String> employees = new HashMap<>();

public static void setEmployees(String name, String jobTitle) {
    employees.put(name, jobTitle);
    System.out.println(employees);
}

public static String getEmployees(String name){
    return employees.get(name);
}

}

这意味着一次只能存在一个版本。您可以直接调用类和方法。

employee_title.setText(Employee.getEmployees(message))

关于java - 使用类而不创建它的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749065/

相关文章:

java - 小程序的主窗口叫什么?如何引用它?

java - Android SQlite 更新只是不工作,没有错误

java - Android 的 google-http-java-client 用法

android - RecyclerView item selected 以及如何禁用 Touch 事件

java - 我应该如何记录参数 "says"?

java - 在java中使用1个函数而不是3个函数

android - 以编程方式清除 Android map 历史记录

android - 没有注册访问者。通用补间引擎

android - 是否可以减少 Android 中显示的通知时间?

java - <?> 是否高于 Java 通配符子类型层次结构中的所有其他内容?