Android OnActivityResult将数据传递到另一个表单并从中获取数组结果
我想将一些数据发送到另一个活动,比如SecondActivity,然后使用OnActivityResult将数组数据从该SecondActivity发送到主活动 这是一个类似于当我按下上传按钮时,我已经有了路径,我想将该路径发送到另一个活动,然后在数组中从另一个活动获取结果到同一个mainactivity,然后想在textview中查看该数组 CSVUploadAndroid OnActivityResult将数据传递到另一个表单并从中获取数组结果,android,onactivityresult,Android,Onactivityresult,我想将一些数据发送到另一个活动,比如SecondActivity,然后使用OnActivityResult将数组数据从该SecondActivity发送到主活动 这是一个类似于当我按下上传按钮时,我已经有了路径,我想将该路径发送到另一个活动,然后在数组中从另一个活动获取结果到同一个mainactivity,然后想在textview中查看该数组 CSVUpload public class CSVUploader extends Activity { Button btnUpload;
public class CSVUploader extends Activity {
Button btnUpload;
EditText txtName;
EditText txtMessageName;
Bundle extras = getIntent().getExtras();
String FullPath = extras.getString("FullPath");
@Override
protected void onCreate(Bundle savedInstanceState) {
try{
File csvfile = new File(FullPath);
FileInputStream csvStream = new FileInputStream(csvfile);
BufferedReader in = new BufferedReader(new InputStreamReader(csvStream));
String line;
String[] name = null;
String[] number = null;
int iCount=0;
while ((line = in.readLine()) != null){
String[] RowData = line.split(",");
name[iCount] = RowData[0];
number[iCount] = RowData[1];
iCount++;
/* ContentValues values = new ContentValues();
values.put(key, value);
values.put(CsvProvider.NUMBER, number);
values.put("status",status);
getContentResolver().insert(CsvProvider.CONTENT_URI, values);
*/ }
in.close();
Bundle b =new Bundle();
Intent intent = new Intent();
b.putStringArray("name", name);
b.putStringArray("number", number);
intent.putExtras(b);
setResult(RESULT_OK, intent);
finish();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
第一个活动
public void uploadfile(View view){
edittext = (EditText)findViewById(R.id.txtFile);
Toast.makeText(NewMessage.this, FullPath, 2000).show();
if(FullPath != null)
{
Intent intent1 = new Intent(this, CSVUploader.class);
intent1.putExtra("FullPath", FullPath);
startActivityForResult(intent1, 2);
}
else
{
Toast.makeText(NewMessage.this, "No File Selected", 2000).show();
}
}
// Listen for results.
public void onActivityResult(int requestCode, int resultCode, Intent data){
// See which child activity is calling us back.
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_PATH){
if (resultCode == RESULT_OK) {
curPathName = data.getStringExtra("GetPath");
curFileName = data.getStringExtra("GetFileName");
FullPath = curPathName+"/"+curFileName;
edittext.setText(curFileName);
/* Toast.makeText(NewMessage.this, resId, duration);*/
}
}
if (requestCode==2){
if (resultCode == RESULT_OK) {
Bundle b=this.getIntent().getExtras();
String[] name=b.getStringArray("name");
String[] number=b.getStringArray("number");
String[] status;
}
}
尝试使用此代码。我不确定这是否能正常工作 MainActivity.java
Bundle b=new Bundle();
Intent i = new Intent(this,MainActivity.class);
b.putStringArray("name",name);
b.putStringArray("number",number)
i.putExtras(b);
startActivity(i);
公共无效上载文件(视图){
}
同样地替换代码
CSVUploader.java
Bundle b=new Bundle();
Intent i = new Intent(this,MainActivity.class);
b.putStringArray("name",name);
b.putStringArray("number",number)
i.putExtras(b);
startActivity(i);
您可以在MainActivity.java中检索它
Bundle b=this.getIntent().getExtras();
String[] name=b.getStringArray("name");
String[] number=b.getStringArray("number");
您需要将检索代码放在onCreate中,而不是放在现在的位置
@Override
protected void onCreate(Bundle savedInstanceState) {
String FullPath = getIntent().getStringExtra("FullPath");
顺便问一下,为什么要使用其他活动来完成任务。你为什么不在同一个活动中做呢。看看这个。即
requestCode
,传递一个整数值。嘿,你现在能看一下代码吗,这样你就可以得到我想要的代码了。我想检索一个数组,它是CSV上传器之类的东西。不能使用它,因为putExtra只针对一个字符串,而不是一个数组。实际上,我有两个数组要检索运行时出现的错误没有运行时错误,它向我显示了替换一些其他的方法我做了一些改变…试着在你的代码中使用这些改变是的,你是对的,但我只是想要一个简单的视图让我试试你的建议