【问题标题】:Passing Data from ListView To TextView in different Activities, Android在不同的活动中将数据从 ListView 传递到 TextView,Android
【发布时间】:2014-05-01 03:36:16
【问题描述】:

我正在尝试将一个 ListView 项从我的 MainActivity 传递到一个 TextView 项到 MenuActivity,意图成功地创建了第二个活动,但是当我尝试传递数据时我遇到了问题。 MainActivity.Java 是一个搜索屏幕,在输入时会显示餐厅名称列表,当用户选择餐厅时,会将其带到菜单页面。我希望他们的选择作为菜单标题转移到新活动。

MainActivity.Java

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {


             Intent myIntent = new Intent(MainActivity.this, MenuActivity.class);

             String listItem = (String) lv.getItemAtPosition(position);
             myIntent.putExtra("restaurant" ,listItem );
             startActivity(myIntent);

        }
      }); // end of lv.setOnItemClickListener

MenuActivity.Java

public class MenuActivity extends ExpandableListActivity {

// textview / menu header
private TextView menuHeader;

// parent list items
private static final String arrGroupElements[] = {"Appetizers", "Main Course", "Desserts",
    "Beverages"};

// strings for child elements
private static final String arrChildElements[][]={
    {"Appetizer 1", "Appetizer 2", "Appetizer 3", "Appetizer 4", "Appetizer 5"},
    {"Main Course 1", "Main Course 2", "Main Course 3", "Main Course 4", "Main Course 5"},
    {"Dessert 1", "Dessert 2", "Dessert 3", "Dessert 4", "Dessert 5"},
    {"Beverage 1", "Beverage 2", "Beverage 3", "Beverage 4", "Beverage 5"}      
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu_screen);
    // added code
    setListAdapter(new ExpandableListAdapter(this));

    menuHeader = (TextView) findViewById(R.id.articleHeaderTextView);

    Bundle extras = getIntent().getExtras();
    String searchData = extras.getString("restaurant");


    menuHeader.setText(searchData);

}

【问题讨论】:

  • 你想传递给 MenuActivity 什么?在我看来,您只是在传递字符串“restaurant”。您的目标是获取列表项并将其传递给 menuHeader 吗?
  • 是的,我的目标是通过列表项。我是 android 新手,很可能传入了错误的参数。我要传递什么来获取列表项?

标签: java android eclipse android-intent bundle


【解决方案1】:

试试这个

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {


         Intent myIntent = new Intent(MainActivity.this, MenuActivity.class);

         String listItem = (String) lv.getItemAtPosition(position);
         myIntent.putExtra("restaurant" ,listItem );
         startActivity(myIntent);
          setResult(RESULT_OK, intent);

    }
  });

并在菜单活动中覆盖 onactivityresults 方法

    public class MenuActivity extends ExpandableListActivity {

// textview / menu header
private TextView menuHeader;

// parent list items
private static final String arrGroupElements[] = {"Appetizers", "Main Course", "Desserts",
    "Beverages"};

// strings for child elements
private static final String arrChildElements[][]={
    {"Appetizer 1", "Appetizer 2", "Appetizer 3", "Appetizer 4", "Appetizer 5"},
    {"Main Course 1", "Main Course 2", "Main Course 3", "Main Course 4", "Main Course 5"},
    {"Dessert 1", "Dessert 2", "Dessert 3", "Dessert 4", "Dessert 5"},
    {"Beverage 1", "Beverage 2", "Beverage 3", "Beverage 4", "Beverage 5"}      
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu_screen);
    // added code
    setListAdapter(new ExpandableListAdapter(this));

    menuHeader = (TextView) findViewById(R.id.articleHeaderTextView);

}
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if(resultCode==RESULT_OK)
        {
          String searchData=data.getExtras().getString("restaurant");
          menuHeader.setText(searchData);
         }

【讨论】:

  • 谢谢,应用程序运行无误。但是,我仍然无法在 MenuActivity 中显示名称。由于错误,我还不得不更改它.. setResult(RESULT_OK, intent); --> setResult(RESULT_OK, myIntent);
  • 你能不能尝试调试你的代码来检查搜索数据是否得到正确的值,最好确定问题出在哪里。抱歉,你应该把你的意图名称而不是意图
  • 我真的不知道如何使用 android 进行调试,但我相信问题就在这里。 myIntent.putExtra("餐厅" ,listItem );我不确定参数对于 putExtra 方法的真正作用。
  • 您需要跟踪您的值尝试检查列表项是否包含任何值
  • 对不起,因为我是 eclipse 和 android 的新手,但是你会怎么做呢?
猜你喜欢
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 2016-03-13
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多