在对话框中更改变量时在主活动中调用方法



我在下面列出了代码,我试图实现的是要从对话框(dialog2(更新的int i。然后我想检查主活动是否已更改,如果已更改,则调用方法。我该怎么做?

主要活动

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int i = 0;

    Dialog1 dialog1 = new Dialog1(this, i);
    dialog1.show();
}
//Want to call this method whenever I is modified
private void iModified(){
}
}
对话框

1 类(此对话框仅将其传递给对话框 2(

public class Dialog1 extends Dialog{
int integerI;
Button button;

public Dialog1(final Activity activity, final int i){
    super(activity);
    setContentView(R.layout.dialog1);
    integerI = i;
    button = findViewById(R.id.dialog1Button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Dialog2 dialog2 = new Dialog2(activity ,integerI);
            dialog2.show();
            closeDialog();
        }
    });
}
private void closeDialog(){
    this.dismiss();
}
}

对话框 2:这是要更改整数的地方,然后我希望将其发送到主活动并检查它是否已更改,如果是,则用新整数替换旧整数。

public class Dialog2 extends Dialog {
int newI;
Button button;
public Dialog2(Activity activity, int i) {
    super(activity);
    setContentView(R.layout.dialog2);
    newI= i + 12345;

    button = findViewById(R.id.dialog2Button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            close();
                }
    });

}
private void close(){
    this.dismiss();
}
}

您可以使用接口。

您的活动:

 public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int i = 0;
    Dialog1 dialog1 = new Dialog1(this, i, new ModifiedListener() {
        @Override
        public void notify(int i) {
            iModified();
        }
    });
    dialog1.show();
}
//Want to call this method whenever I is modified
private void iModified(){
    }
}

您的对话框1:

 public class Dialog1 extends Dialog {
    int integerI;
    Button button;

    public Dialog1(final Activity activity, final int i, final ModifiedListener listener) {
        super(activity);
        setContentView(R.layout.dialog1);
        integerI = i;
        button = findViewById(R.id.dialog1Button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Dialog2 dialog2 = new Dialog2(activity, integerI);
                dialog2.show();
                closeDialog();
            }
        });
    }
    private void closeDialog() {
        this.dismiss();
    }
}

您的对话框 2:

 public class Dialog2 extends Dialog {
        int newI;
        Button button;
        public Dialog2(Activity activity, int i, final ModifiedListener listener) {
            super(activity);
            setContentView(R.layout.dialog2);
            newI = i + 12345;
            //when you modify int you have to call
            listener.notify(newI);

            button = findViewById(R.id.dialog2Button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    close();
                }
            });

        }
        private void close() {
            this.dismiss();
        }
    }

定义类似于类的接口:

public interface ModifiedListener {
    public void notify(int i);
}

最新更新