【问题标题】:Unable to get the data from one Activity to Another Activity无法从一个活动获取数据到另一个活动
【发布时间】:2018-11-17 05:39:10
【问题描述】:

我创建了两个活动。

  1. Main Activity.java(这是应用程序启动的活动,用户单击一个名为“显示计时器”的按钮,将用户带到下一个活动)

  2. displayTimer.java(这是第二个有 ListView 的活动,每行都有数据。点击项目时用户返回主活动)

我正在尝试将存储在该行中的字符串传递给主要活动。

这是显示计时器活动的主要代码

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.user_list_view);
    listView = (ListView) findViewById(R.id.customtimer_listview);
    customTimerAdapter = new CustomTimerAdapter(this, R.layout.row);
    BackGroundTask backGroundTask = new BackGroundTask(this);
    backGroundTask.execute("Get_info");
    registerForContextMenu(listView);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView textView = (TextView) view.findViewById(R.id.time_entered);
            String timeRetrevied = textView.getText().toString();
            //System.out.println(timeRetrevied);
            Intent intentExtras = new Intent(displayTimer.this,MainActivity.class);
            intentExtras.putExtra("TIME_DATA",timeRetrevied);
            setResult(RESULT_OK, intentExtras);
            //startActivityForResult(intentExtras,SECOND_ACTIVITY_REQUEST_CODE,null);
            finish();

        }
    });

}

这是来自 Main 活动的代码,我在其中调用方法 onActivityResult 以通过 displaytimer 的意图获取数据。但我无法获取数据。不知道我做错了什么。任何输入都可以。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SECOND_ACTIVITY_REQUEST_CODE){
        if (resultCode == RESULT_OK) {
            int setTimer = Integer.parseInt(data.getDataString());
            System.out.println(setTimer);
            seekbar.setProgress(setTimer * 60);
            updateTimer(setTimer);
        }
        else{
            System.out.println("Not Ok");
        }
    }
    System.out.println("RequestCode failed");
}

}

【问题讨论】:

  • 字符串数据 = data.getExtra().getString("TIME_DATA")
  • Intent intentExtras = new Intent(displayTimer.this,MainActivity.class); 那应该是Intent intentExtras = new Intent();

标签: android listview android-intent


【解决方案1】:

代替

  data.getDataString() 

使用

data.getStringExtra("TIME_DATA") 

getDataString 返回编码字符串格式的 URI,这不是您需要的,因为您没有传递数据。 当您传入 ID=TIME_DATA 的 Sting 文本时,使用相同的 ID 通过 getStringExtra("TIME_DATA"); 获取字符串。

【讨论】:

  • 我尝试了 data.getStringExtra("TIME_DATA") 但仍然没有。似乎 onActivityResult 方法甚至没有运行。
猜你喜欢
  • 2015-02-16
  • 2012-10-22
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2017-01-07
  • 1970-01-01
相关资源
最近更新 更多