gpt4 book ai didi

Android:针对 View 类和 Activity 类的 startActivityForResult & setResult

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:16 24 4
gpt4 key购买 nike

我很困惑,不知道如何使用 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 中取回参数:

第一步:从colorActivity返回一些值

Intent resultIntent = new Intent();
resultIntent.putExtra("NAME OF THE PARAMETER", valueOfParameter);
...
setResult(Activity.RESULT_OK, resultIntent);
finish();

第 2 步:从主 Activity 收集数据

覆盖 @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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com