正如标题所说我要传输数据,在这种情况下是用户在EditText
和Spinner
上从一个活动到另一个活动所引入的信息。
我正在阅读一本书的教程,但它不起作用(我认为它不完整)。这里是程序的代码:
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
功能缺失
- Constants.INTENT_ACTION_VIEW_LIST
来自哪里?
答案 0 :(得分:3)
所以你的目标是将数据传递到Restaurantsactivity? 通常情况下,使用Intents将android中的数据从一个活动移交给另一个活动。
首先你创建一个意图。 然后使用intent.putExtra()方法将要传输的数据放入intent中。 在获取意图的活动中,您可以使用getIntent()获取数据.getExtra()方法(getExtra可以类似于getStringExtra())。
这是一个名为“name”的编辑框的小例子:
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);
}
答案 1 :(得分:2)
尝试将数据放入Bundle并使用此Bundle启动Activity
Intent intent = new Intent(this, YourSecondActivity.class);
intent.putExtra(... HERE YOUR BUNDLE WITH DATA ...);
startActivity(intent);
希望,它对你有帮助!