2011-10-22 135 views
0

正如标题所说我要传输的数据,在这种情况下,由用户上EditTextSpinner介绍的信息,从一个活动到另一个。问题从一个活动将数据发送到另一个应用程序

我下面从一本书一个教程,但它不工作(我认为它不完整)。这里的程序代码:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.main); 
    this.location=(EditText)findViewById(R.id.location); 
    this.cuisine=(Spinner)findViewById(R.id.cuisine); 
    this.grabReviews=(Button)findViewById(R.id.get_reviews_button); 

    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.cuisine, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    this.cuisine.setAdapter(adapter); 
    this.grabReviews.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       handleGetReviews(); 
      } 
     } 
    ); 
} 

private void handleGetReviews() { 

    RestaurantsActivity application= (RestaurantsActivity) getApplication(); 
    application.setReviewCriteriaCuisine(this.cuisine.getSelectedItem().toString()); 
    application.setReviewCriteriaLocation(this.location.getText().toString()); 
    Intent intent=new Intent(Constants.INTENT_ACTION_VIEW_LIST); 
    startActivity(intent); 

} 

上面的这段代码不起作用。我不明白四两件事:

- RestaurantsActivity必须是实际的活动吗?

- 在我所看到的在互联网上有一个应用程序的所有例子扩展类,在这个例子中有未启用。

- setReviewCriteria功能缺失

-where确实来自Constants.INTENT_ACTION_VIEW_LIST

回答

3

所以你的目标是让数据Restaurantsactivity? 通常情况下,Android中的数据通过使用Intents从一个活动转移到另一个活动。

因此首先要创建一个意图。 然后通过使用intent.putExtra()方法将要传输的数据放入意图中。 在获取意图的活动中,您可以使用getIntent()。getExtra()方法(getExtra可以像getStringExtra())那样获取数据。

这里是所谓的“名”编辑框的小例子:

public void onCreate(Bundle iBundle){ 
    //do some stuff here 
    //perhaps define some Buttos and so on 

    //now lets start the activity 
    Intent intent = new Intent(currentActivityname.this, ActivityYouWantToStart.class); 
    intent.putExtra("name", name.getText().toString()) 
    startActivity(intent); // you can also start an startActivityForResult() here :) 
} 

在我们接收的活动,你现在可以处理这个意图(例如,在onCreate()方法

public void onCreate(Bundle iBundle){ 
String name = this.getIntent().getStringExtra("name",some default value); 
} 
+0

我用于你告诉我:private void handleGetReviews(){ \t \t意图我=新的意图(RestaurantsActivity.this,ReviewCriteria.class); \t \t i.putExtra(“位置” ,location.getText()。toString()); \t \t startActivity(i); \t}和Bundle extras = getIntent()。getExtras(); String location = extras.getString(“location”);但导致强制关闭 – xeon

+0

LogCat调试环境中的相应错误消息是什么? – Vion

+0

好几天后,没有尝试它,我发现这个问题,并在XML文件。你的方法完美运作。非常感谢:D – xeon

2

尽量放在包的数据以及与此捆绑

Intent intent = new Intent(this, YourSecondActivity.class); 
intent.putExtra(... HERE YOUR BUNDLE WITH DATA ...); 
startActivity(intent); 

希望开始活动,它帮助你!

相关问题