Java 侦听View.OnCLickListener中的OnActivityResult

Java 侦听View.OnCLickListener中的OnActivityResult,java,android,button,android-intent,Java,Android,Button,Android Intent,因此,问题如下: 我正在代码中生成一个contentView,其中包含多个for和foreach循环,并动态生成按钮的所有侦听器。但是,如果我想在某些TextView或其他内容中进行更改,我会启动一个新的活动,并在侦听器中侦听ononActivityResult。 我想知道这是否可能,我真的需要一些帮助 这是我的密码: Button goliButton = new Button(this); goliButton.setText("+"); goliBu

因此,问题如下:

我正在代码中生成一个
contentView
,其中包含多个
for
foreach
循环,并动态生成按钮的所有侦听器。但是,如果我想在某些
TextView
或其他内容中进行更改,我会启动一个新的活动,并在侦听器中侦听on
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...
            }
        });

我看到您的代码中使用了
startActivity
。如果要返回结果,应使用
startActivityForResult

onActivityResult
是属于
活动
片段
的方法。如果从
活动调用
startActivityForResult
,则当您的子活动调用
finish
方法时,将调用该活动实例的相应
onActivityResult


在您的案例中,您可以做的是让您的活动实现
View.OnClickListener
。这样,您的结果将在侦听器中返回。

您不能让“等待”方法等待活动返回其结果,如果这就是您询问的原因,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);  // <---
        }
    });

final Button goliButton=新按钮(此);//好的,您稍微忽略了要点,我生成的代码如下所示:(…){//Read from database TextView foo=new TextView(this);…row.addView(foo);}因此我无法直接访问它。是的,准确地说。我用我认为您应该做的更改对它进行了更新。好吧,但是我如何访问vas在for循环中声明的TextView呢?只要让OnClickListener在启动时设置它就行了。该示例对按钮执行此操作,但您可以使用在同一范围内声明的任何其他控件(请确保将其标记为final)。