我没见过这样的情况。我有一个从对话框上的按钮启动的活动。我需要从此活动中获取变量,关闭它并将其传递回对话框。我的方法是什么?
class ColorPickDialog(val activity: Activity, color: Int, val callback: (color: Int) -> Unit) {
lateinit var savedColorsButton: Button
val currentColorHsv = FloatArray(3)
init {
Color.colorToHSV(color, currentColorHsv)
val view = activity.layoutInflater.inflate(R.layout.d_colorpicker, null).apply {
savedColorsButton = findViewById(R.id.saved_colours_button)
savedColorsButton.setOnClickListener{
val intent = Intent(this.activity.applicationContext, DisplayColorsActivity::class.java)
intent.putExtra("SettingState", true)
this.activity.applicationContext.startActivity(intent)
}
}
这是对话框打开的活动。
public class DisplayColorsActivity extends Activity {
public void displayColors() {
ArrayList<ColourRGB> coloursList = colourStorage.getColours();
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
btn = (Button) findViewById(R.id.select_color_btn);
if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean("SettingState")) {
btn.setVisibility(View.VISIBLE);
}
else {
btn.setVisibility(View.INVISIBLE);
Log.v("Status+", "INot there" );
}
}
public void selectButtonClicked(View view){
finish();
}
}
我需要将一个变量从DisplayColorsActivity传递回ColorPick对话框,可能是在selectButtonClicked功能中(使用按钮返回到对话框)请注意第一个片段在Kotlin中,第二个在Java中< / p>
答案 0 :(得分:0)
声明你选择的常数:
static final int COLOR_PICKED_REQUEST = 1234;
在对话框中替换
this.activity.applicationContext.startActivity(intent)
带
this.startActivityForResult(intent, COLOR_PICKED_REQUEST);
并添加方法:
public void userPickedColor(int color){
Log.d("TAG", "COLOR:"+color);
}
在DisplayColorsActivity
添加:
Intent intentMessage=new Intent();
intentMessage.putExtra("COLOR",valueOfYourColor);
setResult(COLOR_PICKED_REQUEST,intentMessage);
在finish();
确保您有对象本身的引用,如mActionDialog
,然后覆盖:
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == COLOR_PICKED_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
int color = data.getIntExtra("COLOR");
mActionDialog.userPickedColor(color);
}
}
}