如何通过意图传递对象列表

时间:2015-03-26 12:12:49

标签: java android

我正在尝试将对象列表从一个活动传递到另一个活动。但是无法发送它。

这是我的代码。

 setPrefBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent homePageIntent = new Intent(SetPreferences.this,
                        KlarityHome.class);// Connecting setPreferences page
                // with Klarity Home Page

               List<PracticeVO> tempList = new ArrayList<PracticeVO>();
               tempList.add(practiceObj);
                     homePageIntent.putExtra("SelectedPractice",       tempList.toArray());
                startActivity(homePageIntent);
            }
            });

在第二次活动中重温:     Intent prefIntent = new Intent();                 列出preferencedPractices =(List)getIntent()。getExtras()。get(“SelectedPractice”);

            ArrayAdapter<PracticeVO> praticeAdapter = new ArrayAdapter<PracticeVO>(this, android.R.layout.simple_spinner_item,
                    preferencedPractices);

              praticeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            practiceSpin.setAdapter(praticeAdapter);

6 个答案:

答案 0 :(得分:1)

您需要使用putExtra()函数将值传递给另一个活动

Intent newIntent = new Intent(MainActivity.this, ResultActivity.class);
newIntent.putExtra("yourTxtField",yourTxtField.getText());

接收你需要使用其他getIntent和Bundle。

Intent myIntent = getIntent();
Bundle valores  = myIntent.getExtras();

//Objeto que vai calcular os resultados
Resultado resultado = new Resultado();

//Recupera os valores recebidos pelo intent
double seuDinheiro  =  Double.parseDouble((String) valores.get("seuDinheiro").toString());

要传递对象,请参阅此SO帖子

How do I pass an object from one activity to another on Android?

How to pass an object from one activity to another on Android

答案 1 :(得分:1)

以这种方式尝试

ArrayList<Object> object = new ArrayList<Object>();
Intent intent = new Intent(Current.class, Transfer.class);
Bundle args = new Bundle();
args.putSerializable("ARRAYLIST",(Serializable)object);
intent.putExtra("BUNDLE",args);
startActivity(intent);

在Transfer.class中

Intent intent = getIntent();
Bundle args = intent.getBundleExtra("BUNDLE");
ArrayList<Object> object = (ArrayList<Object>) args.getSerializable("ARRAYLIST");

答案 2 :(得分:0)

PracticeVO是什么类型的?为了实现您的目标,PracticeVO需要实现Parcelable接口(http://developer.android.com/reference/android/os/Parcelable.html)。然后你可以使用这个版本的putExtra()方法:http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,android.os.Parcelable [])。

答案 3 :(得分:0)

PracticeVO类文件中实现Serializable

从活动发送时:

List<PracticeVO> PracticeVO = new ArrayList<PracticeVO>;
Intent intent = new Intent(SourceActivity.this, TargetActivity.class);
intent.putExtra("PracticeVO", ArrayList<PracticeVO> PracticeVO);
startactivity(PracticeVO);

在接收方:

List<Question> questions = new ArrayList<Question>();
questions = (ArrayList<Question>)getIntent().getSerializableExtra("QuestionListExtra");

来源:Link

答案 4 :(得分:0)

通知fundinProgram =(通知)getIntent()。getSerializableExtra(DETAIL_OBJECT);

答案 5 :(得分:0)

我能够这样实现:

  • 使您的模型类(PracticeVO)和活动类(KlarityHome)实现可序列化。

    public class MyClass implements Serializable {...}
    
  • 在活动类中,将对象存储在ArrayList中而不是List中。

  • 最后,您可以这样做:

    // create intent
    Intent homePageIntent = new Intent(SetPreferences.this, KlarityHome.class);
    
    // create your ArrayList and add your item(s)
    List<PracticeVO> tempList = new ArrayList<PracticeVO>();
    tempList.add(practiceObj);
    
    // add your arraylist to your intent
    homePageIntent.putExtra("SelectedPractice", tempList);
    
    // go go go ;-)
    startActivity(homePageIntent);
    

我希望这会有所帮助。快活的编码!