Newish to 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);
}
}
我从HashMap
填充MainActivity.java
。使用上面的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
上方添加了相同的结果。
我错过了什么?
答案 0 :(得分:1)
要保留您想要变量和方法静态的数据
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))
答案 1 :(得分:0)
将您的Employee类代码替换为下面的
public class Employee {
private static HashMap<String, String> employees;
public Employee() {
if (employees == null) {
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);
}
}
希望对你有所帮助。
答案 2 :(得分:0)
您可以使用public class Employee {
private static sInstance;
private HashMap<String, String> employees = new HashMap<>();
private Employee(){
// No instance available
}
public static synchronized Employee getInstance(){
if(sInstance == null){
sInstance = new Employee();
}
return sInstance;
}
public void setEmployees(String name, String jobTitle) {
employees.put(name, jobTitle);
System.out.println(employees);
}
public String getEmployees(String name){
return employees.get(name);
}
}
来保留您的员工。
Employee.getInstance().getEmployees(message);
稍后您可以使用内存缓存,如下所示:
initGroup() {
let rows = this.reportForm.get('rows') as FormArray;
rows.push(this.fb.group({
expense_account: ['', Validators.required],
description: ['', Validators.required],
amount: ['', Validators.required],
},{validator: this.customValidator})) // it will automatically be applied to the group
}