使用应用程序将数据从一个活动发送到另一个活

时间:2011-10-22 11:39:44

标签: android android-activity transfer

正如标题所说我要传输数据,在这种情况下是用户在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功能缺失

- Constants.INTENT_ACTION_VIEW_LIST来自哪里?

2 个答案:

答案 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);

希望,它对你有帮助!