私はいくつかのカスタムクラスを実装するアンドロイドアプリケーションを作っています。私は他のアクティビティに対してMenu_Organizerクラスのオブジェクトを作成したいが、オブジェクトを初期化して、それを次のアクティビティに送ると、オブジェクトはNULLになる。ここで、クラスは次のとおりです。カスタムオブジェクトがインテントで他のアクティビティに渡されないPutExtra
メニュー項目は、クラス
import java.io.Serializable;
public class Menu_Items implements Serializable {
private String Name = "";
private String Description = "";
private float Price = 0.0f;
private String Category = "";
/* Getters and Setters*/
}
メニュー主催クラス:(メイン)
public class MainActivity extends AppCompatActivity {
private Button btn;
public Menu_Organizer menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onclick();
}
public void onclick() {
btn = (Button) findViewById(R.id. btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Menu_Organizer menu = new Menu_Organizer();
menu.New_Menu_Item("Carne", "Pollo", "Pollo Asado Rico!", 4.55f);
Intent activity2= new Intent(MainActivity.this,temp.class);
activity2.putExtra("Menu", menu);
startActivity(activity2);
}
});
}
}
セカンド活動
public class Menu_Organizer implements Serializable {
ArrayList<String> Categories;
ArrayList<Menu_Items> Food;
// EDITED
public Menu_Organizer() {
Categories = new ArrayList<String>();
Food = new ArrayList<Menu_Items>();
}
/* Other class methods */
}
最初の活動
public class temp extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_Second);
Bundle bundle = getIntent().getExtras();
Menu_Organizer menu = (Menu_Organizer) bundle.getSerializable("Menu");
String str= menu.Food.get(0).getName();
}
}
'MainActivity'の' Intent'は 'temp'' Activity'を開いていますが、あなたが投稿した 'Activity'クラスは' Second'です。 –
New_Menu_Itemの実装を示す必要があります。私の推測では、アイテムを追加する前に、あなたがFoodの新しいArrayListインスタンスを作成していないということです。 –
http://stackoverflow.com/questions/4233873/how-do-i-get-extra-data-from-intent-on-androidこれは 'Bundle bundle = getIntent()。getExtras();'の代わりに試しました。 – iCantSeeSharp