所以问题如下:
我在代码中生成contentView
多个for
和foreach
循环,并且动态生成按钮的所有侦听器。但是,如果我想在某些TextView
或其他内容中进行更改,我会启动一个新的Activity,并且我想在侦听器内的onActivityResult
上进行侦听。
我想知道这是否可能,我真的可以使用一些帮助。
这是我的代码:
Button goliButton = new Button(this);
goliButton.setText("+");
goliButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(TekmaLive.this,DodajStrel.class);
i.putExtra("MINUTA", currTime /1000 + cetrtina * 15 * 60);
i.putExtra("TEKMA", tekmaId);
i.putExtra("IGRALKA", Integer.parseInt(igralka[0]));
i.putExtra("GOL", true);
TekmaLive.this.startActivity(i);
//Insted of startActivity I would use startActivityForResult...
}
});
答案 0 :(得分:0)
我在您的代码中看到您正在使用startActivity
。如果您想要结果,请使用startActivityForResult
。
onActivityResult
是一种属于Activity
或Fragment
的方法。如果您从startActivityForResult
致电Activity
,那么当您的子活动调用onActivityResult
方法时,系统会调用该活动实例的相应finish
。
您可以执行的操作是让您的活动实施View.OnClickListener
。这样,您的结果将在侦听器中返回。
答案 1 :(得分:0)
您不能让方法“等待”活动返回其结果,如果这就是您要求的原因,则startActivity()是异步的。但是,您可以通过“记住”触发事件的按钮来实现相同的效果,即通过在您的活动中引用变量(pressedButton)来引用它。
final Button goliButton = new Button(this); // <---
goliButton.setText("+");
goliButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(TekmaLive.this,DodajStrel.class);
i.putExtra("MINUTA", currTime /1000 + cetrtina * 15 * 60);
i.putExtra("TEKMA", tekmaId);
i.putExtra("IGRALKA", Integer.parseInt(igralka[0]));
i.putExtra("GOL", true);
TekmaLive.this.pressedButton = goliButton; // <---
TekmaLive.this.startActivityForResult(i, YOUR_REQUEST_CODE); // <---
}
});
然后只需在onActivityResult()中读取pressedButton。
此外,您应该使用startActivityForResult()而不是startActivity(),以便之后调用onActivityResult()。