Java 在Android应用程序中使用预定义值填充HashMap,导致应用程序崩溃

Java 在Android应用程序中使用预定义值填充HashMap,导致应用程序崩溃,java,android,android-intent,hashmap,Java,Android,Android Intent,Hashmap,我是移动开发领域的新手,目前我正在尝试创建一个应用程序,允许用户查找首字母缩写词并查看其含义,以及在不存在首字母缩写词的情况下向库中添加首字母缩写词。为此,我尝试使用HashMap。我注意到我的应用程序在每次打开HashMap时都会创建一个新的HashMap实例,因此需要预定义一些值。我遵循中给出的建议,但现在我的应用程序每次打开都会崩溃 此外,在尝试排除故障的过程中,我的startActivity已停止工作。当我将鼠标悬停在startActivity上时,它告诉我“无法解析方法‘startAc

我是移动开发领域的新手,目前我正在尝试创建一个应用程序,允许用户查找首字母缩写词并查看其含义,以及在不存在首字母缩写词的情况下向库中添加首字母缩写词。为此,我尝试使用HashMap。我注意到我的应用程序在每次打开HashMap时都会创建一个新的HashMap实例,因此需要预定义一些值。我遵循中给出的建议,但现在我的应用程序每次打开都会崩溃

此外,在尝试排除故障的过程中,我的startActivity已停止工作。当我将鼠标悬停在startActivity上时,它告诉我“无法解析方法‘startActivity(android.content.Intent)’”和“无法解析构造函数‘Intent(com.private.CSRenA.acronymlookup.Search,java.lang.Class)’,所以现在我所有的java文件都停止工作了

这是我的密码:

    package com.private.CSRenA.acronymlookup;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.EditText;

import java.util.HashMap;


public class Search extends AppCompatActivity {
    public EditText mEdit;
    public HashMap<String,String> acros = new HashMap<String,String>(){{
        //add all currently known thingies.
        acros.put("ASAP","As Soon As Possible");

    }};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        mEdit = (EditText)findViewById(R.id.acroterm);
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setImageResource(R.drawable.ic_search);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                if(acros.containsKey(mEdit.getText().toString())){
                    startActivity(new Intent(Search.this, ValidAcronym.class));
                }
                else{
                    startActivity(new Intent(Search.this, InvalidAcronym.class));
                }

            }
        });
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    public HashMap<String,String> getMap(){
        return acros;
    }

    public void addAcro(String i, String s) {
        if(!acros.containsKey(i)){
            acros.put(i,s);
        }
        else{
            startActivity(new Intent(Search.this, AlreadyExists.class));
        }

    }

}
package com.private.CSRenA.acronymlookup;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.view.view;
导入android.widget.EditText;
导入java.util.HashMap;
公共类搜索扩展了AppCompatActivity{
公共编辑文本媒体;
public HashMap acros=new HashMap(){{
//添加所有当前已知的内容。
acros.put(“尽快”、“尽快”);
}};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u search);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
mEdit=(EditText)findViewById(R.id.acroterm);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
工厂设置图像资源(R.drawable.ic_搜索);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(acros.containsKey(mEdit.getText().toString()){
startActivity(新意图(Search.this,validaronym.class));
}
否则{
startActivity(新意图(Search.this,InvalidAcronym.class));
}
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
公共HashMap getMap(){
返回acros;
}
公共void addAcro(字符串i、字符串s){
如果(!acros.containsKey(i)){
acros.put(i,s);
}
否则{
startActivity(新意图(Search.this,AlreadyExists.class));
}
}
}
如果可以的话,请帮忙!我完全不知道我做错了什么


注意:包名已更改以保护我的身份和职业。

我假设您的应用程序因NullPointerException而崩溃。尝试按如下方式拆分创建:

public HashMap<String,String> acros = new HashMap<>();
关于
startActivity()
-问题。如果确实已将包重命名为
…private…
,则需要删除
private
部分,因为
private
是一个Java关键字,不能在包名称中使用。

更改

public HashMap<String,String> acros = new HashMap<String,String>(){{
    //add all currently known thingies.
    acros.put("ASAP","As Soon As Possible");

}};
public HashMap acros=new HashMap(){{
//添加所有当前已知的内容。
acros.put(“尽快”、“尽快”);
}};

public HashMap acros=new HashMap(){{
//添加所有当前已知的内容。
付诸表决(“尽快”、“尽快”);
}};

应该修复您的崩溃

注意:我已经通读了所有类似的问题,但没有一个答案能够提供帮助。这解决了我的问题!我发现startActivity问题是由于我的语法造成的。我把它分成两个单独的语句,错误就消失了。谢谢!我知道我可能犯了一个小错误,因为我真的很擅长这样做。
public HashMap<String,String> acros = new HashMap<String,String>(){{
    //add all currently known thingies.
    acros.put("ASAP","As Soon As Possible");

}};
public HashMap<String,String> acros = new HashMap<String,String>(){{
    //add all currently known thingies.
   put("ASAP","As Soon As Possible");

}};