2016-04-17 11 views
1

アンドロイドスタジオで新しいアクティビティを開くためにイメージビューが必要なアプリを作成しました。私はそれが働いていたが、突然それは動作を停止し、今私のimageviewsが選択されるとクラッシュする。以下 は私のコードです:それは働いてイマイチ理由Android Studios Appクラッシュ

public class Options extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_options); 

    ImageView imgview1 = (ImageView) findViewById(R.id.imageView1); 
    imgview1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent = new Intent(Options.this, PayorOrder.class); 
      myIntent.putExtra("Table", 1); 
      startActivity(myIntent); 

     } 
    }); 

    ImageView imgview2 = (ImageView) findViewById(R.id.imageView2); 
    imgview2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent2 = new Intent(Options.this, PayorOrder.class); 
      myIntent2.putExtra("Table", 2); 
      startActivity(myIntent2); 
     } 
    }); 

    ImageView imgview3 = (ImageView) findViewById(R.id.imageView3); 
    imgview3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent3 = new Intent(Options.this, PayorOrder.class); 
      myIntent3.putExtra("Table", 3); 
      startActivity(myIntent3); 

     } 
    }); 

    ImageView imgview4 = (ImageView) findViewById(R.id.imageView4); 
    imgview4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent4 = new Intent(Options.this, PayorOrder.class); 
      myIntent4.putExtra("Table", 4); 
      startActivity(myIntent4); 

     } 
    }); 

    ImageView imgview5 = (ImageView) findViewById(R.id.imageView5); 
    imgview5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent5 = new Intent(Options.this, PayorOrder.class); 
      myIntent5.putExtra("Table", 5); 
      startActivity(myIntent5); 

     } 
    }); 

    ImageView imgview6 = (ImageView) findViewById(R.id.imageView6); 
    imgview6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent6 = new Intent(Options.this, PayorOrder.class); 
      myIntent6.putExtra("Table", 6); 
      startActivity(myIntent6); 

     } 
    }); 
} 

} 

誰もが見ていますか?その本当に私を混乱させ、感謝

編集:

04-17 23:16:27.940 1966-1966/com.example.ben.restaurantapp E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.ben.restaurantapp, PID: 1966 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.ben.restaurantapp/com.example.ben.restaurantapp.PayorOrder}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
at android.app.ActivityThread.access$800(ActivityThread.java:144) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5221) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference 
at com.example.ben.restaurantapp.PayorOrder.<init>(PayorOrder.java:16) 
at java.lang.reflect.Constructor.newInstance(Native Method) 
at java.lang.Class.newInstance(Class.java:1572) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1065) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)  
at android.app.ActivityThread.access$800(ActivityThread.java:144)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:135)  
at android.app.ActivityThread.main(ActivityThread.java:5221)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)  

EDIT2:有料または注文クラス:

public class PayorOrder extends AppCompatActivity { 

Hashtable <Integer, DinnerTable> tables = new Hashtable<>(); 
DinnerTable currentTable = tables.get(getIntent().getIntExtra("Table", -1)); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_payor_order); 

    Button btn = (Button) findViewById(R.id.btnOrder); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent = new Intent(PayorOrder.this, Menu.class); 
      myIntent.putExtra("Table", (Parcelable) currentTable); 
      startActivity(myIntent); 
     } 

    }); 

    if(tables.get(1) == null ) 
    setupHashtable(); 
    Toast t = Toast.makeText(PayorOrder.this, String.valueOf(getIntent().getIntExtra("Table", -1)), Toast.LENGTH_SHORT); 
    t.show(); 

} 

private void setupHashtable() { 
    for (int i = 1; i < 7; i++) 
    { 
     DinnerTable dt = new DinnerTable(); 
     dt.setTableNum(i); 
     tables.put(dt.getTableNum(), dt); 
    } 
} 
} 
+1

の間にそれを割り当てることを

変更は、あなたはcrashlogsを投稿することができますか? –

+0

編集:crashlogsの投稿を参照 – IonaMc

+0

PayOrderで 'getIntExtra'を呼び出すと' NullPointerException'が発生します –

答えて

0

DinnerTable currentTable = tables.get(getIntent().getIntExtra("Table", -1));

あなたの問題があり、あなたがgetIntent().getIntExtra()メソッドを呼び出す必要がありますgetIntent()がnullにならないことを保証することができます。 DinnerTable currentTable;

にしてからonCreate

currentTable = tables.get(getIntent().getIntExtra("Table", -1));

+0

私はそれをcurrentTable = = tables.get(getIntent()。getIntExtra( "Table"、-1))に変更します。私はエラーを取り戻していますか? – IonaMc

+0

申し訳ありませんがタイプミスで、2番目の '= ' –

+0

を完全に削除します。ありがとう、本当にありがとう! – IonaMc

関連する問題