- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我很困惑,不知道如何使用 startActivityResults 和 setResults 从以前的 Activity 中获取数据。我有一个 View 类和一个 Activity 类。
基本上在我的 View 类中我有这个对话框,它实际上会启动名为 colorActivity 类的 Activity 类。当用户选择是时,它也会将所选圆圈的名称传递给 colorActivity 类。在 colorActivity 类中,允许用户输入特定圆圈的颜色代码,我想将颜色代码传回 View 类。我在使用 startActivityForResult 和 setResult 方法将值从 Activity 传递回 View 时遇到问题。补充一下,之后如何使用获取的数据?
我的代码如下
来 self 的 View 类的 Ontouchevent 代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
x = event.getX();
y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
for (int i = 0; i < circles.size(); i++) {
if (circles.get(i).contains(x, y)) {
circleID = i;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new Builder(
getContext());
final EditText text = new EditText(getContext());
builder.setTitle("Adding colors to circles").setMessage(
"Proceed to Enter color");
builder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface di,
int i) {
Intent intent = new Intent(
getContext(),
colorActivity.class);
intent.putExtra("circlename", circleNameList.get(circleID));
startActivityForResults(intent, 1); // error incurred here : The method startActivityForResult(Intent, int) is undefined for the type new DialogInterface.OnClickListener(){}
}
});
builder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface di,
int i) {
}
});
builder.create().show();
}
}, 3000);
break;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) { // Please, use a final int instead of hardcoded
// int value
if (resultCode == RESULT_OK) {
ccode = (String) data.getExtras().getString("colorcode");
}
}
}
public static String getColorCode() {
return ccode;
}
在colorActivity中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_ecolor);
circlenametextview = (TextView)findViewById(R.id.circlenametextview);
String circlename = super.getIntent().getStringExtra("circlename");
circlenametextview.setText(circlename);//get the circle name
savebutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(colorActivity.this, ?????);//how to return back to the view class?
colorcode = colorEditText.getText().toString();// I am able to get value right up till this point
Intent resultIntent = new Intent();
resultIntent.putExtra("colorcode", colorcode );
setResult(Activity.RESULT_OK, resultIntent);
finish();
}// onclick
});
}
最佳答案
在更正其他代码以便您可以运行该程序后,您可以通过这种方式从您的 Activity colorActivity
中取回参数:
Intent resultIntent = new Intent();
resultIntent.putExtra("NAME OF THE PARAMETER", valueOfParameter);
...
setResult(Activity.RESULT_OK, resultIntent);
finish();
覆盖 @onActivityResult(...)
。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) { // Please, use a final int instead of hardcoded int value
if (resultCode == RESULT_OK) {
String value = (String) data.getExtras().getString("NAME OF THE PARAMETER");
引用资料
关于Android:针对 View 类和 Activity 类的 startActivityForResult & setResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22553672/
在我的应用程序中,我在 list 文件中定义了 2 个 Activity ,如下所示: 在 MainActivity 中,我有 4 个 fragment 。在一个 fragment 中,我使用以下
使用 TaskCompletionSource.SetResult() 将在一个线程上创建的非线程安全对象传递给另一个线程是否安全? 例如在这个人为的例子中: using System; using
请注意:这里是 qt/c++ 新手 目的: 我有一个 QDialog,我想从中返回一个结果。我知道 QDialog::exec() 与 setResult 结合,导致使用 Accept() 或 Rej
这个问题在这里已经有了答案: Sending data back to the Main Activity in Android (13 个答案) 关闭 9 年前。 我创建了一个文件资源管理器和一个
我试图在我的“注册”按钮上设置结果,但没有任何反应: 登录 Activity : 为结果开始 Activity : Intent intent = RegisterActivity_.intent(t
我正在开发一个涉及两个 Activity 的测验应用程序:一个显示 Question 列表的 QuizActivity 和一个 QuestionActivity显示问题的详细信息(提示、选项等)。在
我已经使用 startActivityForResult 从父 Activity 开始了一个子 Activity 。在子 Activity 中执行所需的功能后,我使用 setResult 设置结果。但
我正在我的 Android 应用程序中实现 DeepLinking。假设我正在使用 PhonePe 付款并选择使用其他应用程序付款并选择我的应用程序。 Intent intent = new Inte
场景:我有一个 MainActivity.java、OtherPageForFragments.java 和一个位于 OtherPageForFragments.java 上的 fragment 在
我发现 TaskCompletionSource.SetResult(); 在返回之前调用等待任务的代码。就我而言,这会导致死锁。 这是在普通Thread中启动的简化版本 void ReceiverR
我有一个 Activity 保存 fragment (MainActivity.java) 在里面, fragment (ItemFragment.java) 有显示一些项目的 recyclervie
单击任何列表项时,我必须使用 setResult 转到父 Activity 。 list.setOnClickListener(new OnClickListener() {
我发起了一个电话 Activity 请求结果: Intent intentcall = new Intent(); intentcall.setAction(Intent.ACTION_CAL
我正在为 Android 创建一个基于 GPS 的应用程序,并且有 2 个 Activity Main 和 LocNames。 Main 显示我的 map ,LocNames 用于获取用户想要的来源和
好的,我又来了。还在学习。现在我需要在 2 个 Activity 中来回传递整数值。第一个 Activity 将计数器值传递给第二个 Activity (跟踪玩家统计数据)。第二个 Activity
在我的应用程序中,我需要启动 RecyclerAdapter.class 并等待结果,但我无法编写行 setResult 并完成: public static class MyViewHolder e
我有一个期望用户选择项目的 Activity ,但用户可以选择单击后退按钮而不选择项目。这个“项目选择” Activity 是从 startActivityForResult() 开始的。 我想知道两
在谷歌的 C2DM 示例代码中,当在 BroadcastReceiver 中收到通知时,他们调用: setResult(Activity.RESULT_OK, null/* data */, null
我有一个 Activity A - 它在 Viewpager 中包含 3 个 fragment 。 fragment 编号 1,是一个新闻文章列表,当用户从列表中选择一篇新闻文章时, Activity
最初我认为所有的延续都是在线程池上执行的(给定一个默认的同步上下文)。然而,当我使用 TaskCompletionSource 时,情况似乎并非如此。 我的代码看起来像这样: Task Foo() {
我是一名优秀的程序员,十分优秀!