2017-01-05 8 views
0

私はモバイル開発の世界で初めてです。私は現在、頭字語を検索して、それが何を意味するのかを知るアプリケーションを作成しようとしています。それが存在しない場合、ライブラリの略語。これを行うために、私はHashMapを使用しようとしていました。私は、アプリケーションを開いたときに毎回HashMapの新しいインスタンスを作成し、いくつかの値を事前に定義する必要があることに気付きました。私はthis answerで与えられた勧告に従っていましたが、開かれるたびに私のアプリケーションがクラッシュするようになりました。AndroidアプリケーションでHashMapにアプリケーションをクラッシュさせる原因となる

また、トラブルシューティングを試みる過程で、私のstartActivityが機能しなくなりました。 startActivityにカーソルを置いて「コンストラクタを解釈できません」というメッセージが表示されます。「Intent(com.private.CSRenA.acronymlookup.Search、java.lang.Class)」というように、「startActivity(android.content.Intent)」メソッドを解決できません。今ではすべての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

注意を修正する必要があります:私はすべての同様の質問を読んでいると回答のどれも助けることができませんでした。 – CSRenA

答えて

0

NullPointerExceptionのためにアプリがクラッシュすると想定しています。次のように作成までを分割してみてください。

public HashMap<String,String> acros = new HashMap<>(); 

そしてonCreate()内側:

acros.put("ASAP","As Soon As Possible"); 

startActivity() -problemsについて。パッケージの名前を...private...に変更した場合、privateはパッケージ名に使用しないでください。privateはJavaキーワードであるため、private部分を削除する必要があります。

+0

これは私の問題を修正しました!私は、startActivityの問題が私の構文によるものであることを知りました。私は2つの別々の声明にそれを壊し、エラーは消え去った。 – CSRenA

0

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

}}; 

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

}}; 

を変更すると、あなたのクラッシュ

+0

ありがとうございます!私はおそらく私はそれを行うことに本当に良いので、私は小さなエラーを作ったことを知っていた。 – CSRenA

関連する問題