有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓如何传递活动。类作为函数的参数

我最近从Python转到Android,我被困在这里

这是我的类声明,用于为接受必要参数的警报对话框创建公共函数:

public static AlertDialog.Builder getAlertDialog(String strArray[],
        String strTitle, Activity v) {

    return new AlertDialog.Builder(v)
    .setTitle(strTitle).setItems(strArray,
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
        }
    });
}

但我无法通过这段代码调用此函数,这段代码给了我一个错误:

  getAlertDialog(strArray, strTitle, MakeCall.class).show();

错误是:

the method getAlertDialog(String[], String, Activity) in the type   MakeCallAlertDialog is not applicable for the arguments (String[], String, Class<TestActivity>)

我怎样才能正确地得到这个


共 (6) 个答案

  1. # 1 楼答案

    你需要实例。使用thisSampleActivity.this

  2. # 2 楼答案

    我想你想通过考试。如果不起作用,请使用MakeCall.this

     getAlertDialog(strArray, strTitle, this).show();
    
  3. # 3 楼答案

    这对我很有用:

    private void switchActivity(Class cls){
        Intent intent = new Intent(HomeActivity.this, cls);
        startActivity(intent);
    }
    

    像这样调用函数:switchActivity(DestinationActivity.class)

  4. # 4 楼答案

    只需创建一个活动对象/实例,如新建YourActivity()

    public static void Redirect(Context context,Activity page) {
    
    ..... //code
    
    context.startActivity(new Intent(context,page.getClass()));
    
    ((Activity) context).finish();
    }
    

    并将此方法用作

    Redirect(Registration.this, new YourActivity());
    
  5. # 5 楼答案

    这样称呼:

    ButtonClickBySani(R.id.btnsehrabandi, sehrabandiActivity.class);
    

    定义:

    private void ButtonClickBySani(int ButtonId, final Class<? extends Activity> ActivityToOpen)
    {
        Button btn;
        // Locate the button in activity_main.xml
        btn = (Button) findViewById(ButtonId);
    
        // Capture button clicks
        btn.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                startActivity(new Intent(getBaseContext(), ActivityToOpen));
                // Start NewActivity.class
                //Intent myIntent = new Intent(getBaseContext(), ActivityToOpen);
               // startActivity(myIntent);
            }
        });
    }
    
  6. # 6 楼答案

    如果您只想传递对活动的引用,请使用:MakeCall.this(或者只使用this