Android 如何将整数从主活动传递到自定义对话框

Android 如何将整数从主活动传递到自定义对话框,android,android-activity,Android,Android Activity,我想将整数数据从主活动发送到自定义对话框,此整数将帮助选择文本视图和按钮 此代码在另一个活动中调用自定义对话框 主要活动 exit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { counter=1; CustomDialogClass cdd=new Cus

我想将整数数据从主活动发送到自定义对话框,此整数将帮助选择文本视图和按钮

此代码在另一个活动中调用自定义对话框

主要活动

exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter=1;
                CustomDialogClass cdd=new CustomDialogClass(MainActivity.this,getApplicationContext(),counter);
                try{
                    Toast.makeText(MainActivity.this,"ExitCounter",Toast.LENGTH_LONG).show();
                }catch (Exception e){
                    Toast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_SHORT).show();
                }
                //cdd.show();
            }
        });
        hello = (Button) findViewById(R.id.test_hello);
        hello.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter=2;
                CustomDialogClass cdd=new CustomDialogClass(MainActivity.this,getApplicationContext(),counter);
                try{
                    Toast.makeText(MainActivity.this,"HelloCounter",Toast.LENGTH_LONG).show();
                }catch (Exception e){
                    Toast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_SHORT).show();
                }
               // cdd.show();
            }
        });
这是自定义对话框的代码

package com.example.mhaad.test;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

class CustomDialogClass extends Dialog implements android.view.View.OnClickListener {

    public Activity c;
    public Button yes, no,ok;
    public TextView hello,exit;
    public int selection;
    Context context;

    public CustomDialogClass(Activity a, Context applicationContext,int con) {
        super(a);
        // TODO Auto-generated constructor stub
        this.c = a;
        this.context=applicationContext;
        selection=con;
        Toast.makeText(context,"Con",Toast.LENGTH_LONG).show();
        show();
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Toast.makeText(context,"onCreate",Toast.LENGTH_LONG).show();
        Toast.makeText(context,""+selection,Toast.LENGTH_LONG).show();
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_custom_dialog_box);
        yes = (Button) findViewById(R.id.btn_yes);
        no = (Button) findViewById(R.id.btn_no);
        ok=(Button)findViewById(R.id.btn_ok);
        exit = (TextView) findViewById(R.id.txt_dia);
        hello = (TextView) findViewById(R.id.txt_dia1);
        exit.setVisibility(View.INVISIBLE);
        hello.setVisibility(View.INVISIBLE);
        yes.setVisibility(View.INVISIBLE);
        no.setVisibility(View.INVISIBLE);
        ok.setVisibility(View.INVISIBLE);
        yes.setOnClickListener(this);
        no.setOnClickListener(this);
        ok.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        Toast.makeText(context,"Click",Toast.LENGTH_LONG).show();
        switch(selection){
            case 1:
                Log.e("asd",String.valueOf(selection));
                exit.setVisibility(View.VISIBLE);
                hello.setVisibility(View.INVISIBLE);
                yes.setVisibility(View.VISIBLE);
                no.setVisibility(View.VISIBLE);
                ok.setVisibility(View.INVISIBLE);
                switch (v.getId()) {
                    case R.id.btn_yes:
                        c.finish();
                        break;
                    case R.id.btn_no:
                        dismiss();
                        break;
                    case R.id.btn_ok:
                        dismiss();
                        break;
                    default:
                        break;
                }
                break;

            case 2:
                Log.e("asd",String.valueOf(selection));
                exit.setVisibility(View.INVISIBLE);
                hello.setVisibility(View.VISIBLE);
                yes.setVisibility(View.INVISIBLE);
                no.setVisibility(View.INVISIBLE);
                ok.setVisibility(View.VISIBLE);
                switch (v.getId()) {
                    case R.id.btn_yes:
                        c.finish();
                        break;
                    case R.id.btn_no:
                        dismiss();
                        break;
                    case R.id.btn_ok:
                        dismiss();
                        break;
                    default:
                        break;
                }
                break;

            default:
                break;
        }
        dismiss();
    }
}
这是舱单

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

整数被传递到自定义对话框,但整数被传递到onClick()对话框结束后,我尝试了所有方法,但onClick()函数无法访问int值。
需要帮助

通过包传递整数

      //Create the bundle
   Intent i=new intent(MainActivity.this,yourSecondActivity)
   Bundle bundle = new Bundle();
   //Add your integer
   bundle.putInt("integer", your_integer);
   //Add the bundle to the intent
   i.putExtras(bundle);
   startActivity(i);
//在第二个活动中

 Bundle bundle = getIntent().getExtras();
 //Extract the data…
 Integer int= bundle.getInt("integer",0);        

当您已经有了一个
CustomDialogClass
对象时,它有什么区别?只需使用setter方法传递值,也可以在构造函数中传递。或者,为了区分调用,您可以使用回调,请参见。因此,您的自定义对话框正在由另一个活动显示,即使是这样,您的自定义对话框构造函数也具有参数计数器,并且应该能够使用变量con,因为我可以看到您已使用con初始化了选择,那么,这有什么问题?没有得到你想要达到的目标?根据问题,您已在构造函数中传递值并将其分配给变量。还有什么?如你所见,我已将所有元素设置为invisible@AayushThakur调试完毕后,对话框是空的@muhammad haad为什么不能打开“警报对话框”或打开对话框?基本上我想放置多个按钮,那是why@MuhammadHaad请清楚地传达您的要求此自定义对话框将通过主活动中的5个按钮访问,每个按钮都有不同的信息和按钮,这就是我使用自定义对话框的原因