2016-11-22 17 views
0

私のコードでスタックになっていると私はprocced.Theエミュレータがクラッシュし、スタック47行目を指していません。初心者を助けてください!エミュレータがクラッシュ "無効なint"

public class MainActivity3 extends AppCompatActivity implements View.OnClickListener { 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main3); 
     Button obutton = (Button) findViewById(R.id.obutton); 
     obutton.setOnClickListener(this); 

     final Button btn = (Button) findViewById(R.id.button); 
     final EditText edt = (EditText) findViewById(R.id.editText); 
     final ListView listview = (ListView) findViewById(R.id.Lista); 
     final ArrayList<String> list = new ArrayList<>(); 



      final StableArrayAdapter adapter = new StableArrayAdapter(this, android.R.layout.simple_list_item_1, list); 
      listview.setAdapter(adapter); 
      btn.setOnClickListener(new View.OnClickListener() { 


       @Override 
       public void onClick(View v) { 
       if (edt.getText().toString() != null) { 
        adapter.addItem(edt.getText().toString()); 
       } 
       } 
      }); 
    } 

    private class StableArrayAdapter extends ArrayAdapter<String> { 

     ArrayList<String> data = new ArrayList<>(); 
     private List mIdMap; 


     public StableArrayAdapter(Context context, int textViewResourceId, 
            List<String> objects) { 
      super(context, textViewResourceId, objects); 
      this.data = (ArrayList) objects; 
     } 

     @Override 
     public long getItemId(int position) { 
      String item = getItem(position); 
      return (long) mIdMap.get(Integer.parseInt(item)) <-- Crashing 
     } 

     public void addItem(String item) { 
      data.add(item); 
      notifyDataSetChanged(); 
     } 
    } 



    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.obutton: 
       Intent obama = new Intent(MainActivity3.this, MainActivity.class); 
       startActivity(obama); 
      case R.id.button: 
       Intent test = new Intent(MainActivity3.this, Main6Activity.class); 
       startActivityForResult(test, 1); 

     } 

    } 


} 

ザ・スタックエラー:

FATAL EXCEPTION: main java.lang.NumberFormatException: Invalid int: "t" at java.lang.Integer.invalidInt(Integer.java:138)

+0

速い回答ありがとうございましたChirag!しかし、私は単純に "get(item)"やget(String new(item))というコードを書くことはできません。なにか提案を?前もって感謝します。 –

答えて

0

交換:

@Override 
    public long getItemId(int position) { 
     String item = getItem(position); 
     return (long) mIdMap.get(Integer.parseInt(item)) <-- Crashing 

に: @Override公共長いgetItemId(INT位置){ 戻り-1L。 これを機能させました。

1

無効な整数を解析しています。文字列には、intとして解析するための数値が含まれている必要があります。

現在、整数として「t」を解析しているため、エラーが発生しています。項目は、 "0"、 "1"または任意の数字の数字列のようにする必要があります。

+0

ちょうど明確にするために、私は問題が何であるか知っていますが、私はそれを解決する方法を知らない。変数mIDMapをリストから変更する必要があります。 –

関連する問題