我最近从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>)
任何人都可以告诉我如何正确地获得这个吗?提前谢谢。
答案 0 :(得分:19)
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);
}
});
}
答案 1 :(得分:7)
如果您只想传递对活动使用的引用:MakeCall.this
(或者只是this
。)
答案 2 :(得分:3)
我想你要通过this
。如果此不起作用,请使用MakeCall.this
。
getAlertDialog(strArray, strTitle, this).show();
答案 3 :(得分:2)
你需要这个实例。使用this
或SampleActivity.this
。
答案 4 :(得分:2)
只需创建一个活动对象/实例,例如 new 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 :(得分:0)
在Java中,您编写的每个类也都附加了Class
类。类加载器等将使用Class
类。
正如其他人所说,你应该使用MakeCall.this
代替MakeCall.class
,因为MakeCall.this
会指向自己哪个是活动,而MakeCall.class
会指向MakeCall的附加{{1} }。class。
答案 6 :(得分:-1)
这对我有用:
private void switchActivity(Class cls){
Intent intent = new Intent(HomeActivity.this, cls);
startActivity(intent);
}
调用此函数:switchActivity(DestinationActivity.class)