关于activity之间及activity与baseAdapter,activity与Fragment的数据传

移动开发 码拜 8年前 (2016-09-11) 1562次浏览
本人的android apk是这样设计的,
关于activity之间及activity与baseAdapter,activity与Fragment的数据传
从ProInfoListAdapter(extends BaseAdapter)里面启动一个UserRegActivity (extends Activity),然后在这个UserRegActivity里面输入一个数据,再将这个数据传递到ProInfoListAdapter里面,怎么做,本人图片UserRegActivity里面那个代码不能用,
但可以从BaseAdapter里面启动一个Activity.
希望指点,谢谢
解决方案

10

ProInfoListAdapter在启动UserRegActivity时应该使用startActivityforResult(Intent intent),而不是普通的startActivity,否则收不到返回的Intent信息,然后重写onActivityResult方法来处理返回信息

5

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
private static final String TAG = “MainActivity”;
private static void log(String msg) {
Log.e(TAG, msg);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
log(“onCreate()”);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, TaskProcessActivity.class);
int requestCode = 1;
log(“startActivityForResult() requestCode = ” + requestCode);
startActivityForResult(intent, requestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
log(“onActivityResult requestCode = ” + requestCode + “, resultCode = ” + resultCode);
super.onActivityResult(requestCode, resultCode, data);
}
}
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
public class TaskProcessActivity extends Activity {
private static final String TAG = “TaskProcessActivity”;
private static void log(String msg) {
Log.e(TAG, msg);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
log(“onCreate()”);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_process);
processRequest();
finish();
}
private void processRequest() {
int resultCode = 2;
log(“setResult() resultCode = ” + resultCode);
setResult(resultCode);
}
}
假如会用Android Studio,可以直接下载这个Demo,不然就本人复制粘贴后学习一下。

5

还是没有很明白你的需求。
BroadcastReceiver有试过吗?

10

设计有问题,adapter是在Activity里面的,通信应该是activity之间通信,然后再通知adapter更新
首先应该改成从Activity或Frament传入onClickListener,这时可以用startActivityForResult,获得返回的数据后在Activity里进行你想要的操作更新adapter的数据,再调用 adapter.notifyDataSetChanged();

10

你用activity调用的startActivityForResult,当然是activity收到结果……
你要是想要Fragment收到结果,传进去的应该是fragment,原因是fragment也有startActivityForResult方法

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于activity之间及activity与baseAdapter,activity与Fragment的数据传
喜欢 (0)
[1034331897@qq.com]
分享 (0)