【发布时间】:2013-03-17 16:36:40
【问题描述】:
在 Android 2.3.4 上使用 Sherlock:
我想显示一个 AlertDialog 包含:
1) 标题
2)内容
3)2 个按钮
我正在使用以下类:
public class MyAlertDialog extends SherlockDialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getSherlockActivity());
builder.setMessage("Title")
.setPositiveButton("Fire!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
在我的 Activity 中,我正在调用:
MyAlertDialog m = new MyAlertDialog();
m.show(getSupportFragmentManager(), "hey");
它正在显示 AlertDialog 但主题是旧的(记住我使用的是 Android 2.3.4)
如果你愿意,这是我的整个主要活动课程:
public class MainActivity extends SherlockFragmentActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar ab;
ab = getSupportActionBar();
ab.setTitle("Testing Sherlock");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
getSupportMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId())
{
case R.id.action_one:
MyAlertDialog m = new MyAlertDialog();
m.show(getSupportFragmentManager(), "hey");
break;
}
return super.onOptionsItemSelected(item);
}
}
我为我的应用设置的样式是:
<resources>
<style name="AppBaseTheme" parent="@style/Theme.Sherlock.Light">
</resources>
P.S:我显示了ActionBar,除了AlertDialog 的主题外,一切正常。
我希望它看起来像这样:
不喜欢这个:
【问题讨论】:
-
您是否也添加了
HoloEverywhere库? -
不...我应该添加它吗?
-
这是在所有 API 版本上获取整个 Holo 主题的简单方法。
-
我应该把它和sherlock一起加入吗?