我是移动开发世界的新手,我目前正在尝试创建一个应用程序,允许某人查找缩写并查看其含义,并在库中添加首字母缩略词(如果不存在的话)。为此,我试图使用HashMap。我注意到我的应用程序每次打开时都会创建一个HashMap的新实例,因此需要预先定义一些值。我遵循this answer中给出的建议,但现在我的应用程序每次打开时都会崩溃。
此外,在尝试进行故障排除的过程中,我的startActivity已停止工作。它告诉我"无法解决方法' startActivity(android.content.Intent)'"当我将鼠标悬停在startActivity上时,"无法解析构造函数' 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));
}
}
}
如果可以,请帮忙!我完全迷失了我的错误。
注意:包名已更改,以保护我的身份和专业。
答案 0 :(得分:0)
我认为您的应用因NullPointerException而崩溃。尝试按如下方式拆分创建:
public HashMap<String,String> acros = new HashMap<>();
在onCreate()
内:
acros.put("ASAP","As Soon As Possible");
关于startActivity()
- 问题。如果您确实已将程序包重命名为...private...
,则需要删除private
部分,因为private
是Java关键字,不得在程序包名称中使用。
答案 1 :(得分:0)
更改
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");
}};
应该修复你的崩溃