我现在在几个不同的应用程序中遇到了这个问题,我似乎无法找到解决方案.
如果,在onCreate()中Activity,我启动了一个使用对话框主题的活动,它不会在屏幕上绘制任何内容......整个屏幕保持黑色.所有的观点都在那里(例如,我可以点击EditText应该在哪里,它会给我键盘),它们只是不可见.
有人有主意吗?
愚蠢的简单例子,为了好玩:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startActivityForResult(new Intent(this, CredentialsInputActivity.class), 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// do some crap with the result, doesn't really matter what
}
}
Run Code Online (Sandbox Code Playgroud)
CredentialsInputActivity是非常直接的...只是扩展Activity并@android:style/Theme.Dialog在清单文件中设置主题.
我试图从Android应用程序进行简单的插入.我可以php通过连接从浏览器运行我的脚本?entry="Sample value from browser",但是当我从Android运行应用程序时,我没有插入.
这是我调用使用JSON并实现AsyncTask的insert类的地方:
package us.jtaylorok.android.sqlite.first;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
public class RemoteInsert extends AsyncTask<Void, String,String >{
protected String TAG;
protected Context context;
protected String input;
protected ProgressDialog progressDialog;
public RemoteInsert(String i,Context c){
this.input = i;
this.context = c;
}
protected void onPreExecute() {
//ProgressDialog progressDialog; // = new ProgressDialog(context);
//progressDialog=ProgressDialog.show(,"Please Wait..","Sending data …Run Code Online (Sandbox Code Playgroud) 我遇到了AlertDialog和自定义内容/视图的问题.简单地说,当打开软键盘时,AlertDialog不会自行调整大小.以下屏幕截图显示了我的问题以及我想要实现的目标:
当前行为(左)和想要的行为(右)

我知道还有一些其他线程在SO上有类似的问题.不幸的是,所提供的解决方案都不适用于我.按照我的示例代码:
XML
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</EditText>
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
Java - CustomAlertDialog.class
public class CustomAlertDialog extends AlertDialog{
private Context context;
public CustomAlertDialog(Context context) {
super(context);
this.context = context;
}
public void buildDialog(){
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog_content, null);
builder = new AlertDialog.Builder(context);
builder.setTitle("EditText");
builder.setView(layout);
builder.setPositiveButton("Ok", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
dismiss();
}
});
builder.create();
}
public …Run Code Online (Sandbox Code Playgroud) 我是android的中级程序员.现在我正在开发一个有视图的应用程序.当我点击该视图时,我必须显示一个弹出菜单.
我从android开发者网站获得了以下代码
public void showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.actions, popup.getMenu());
popup.show();
}
Run Code Online (Sandbox Code Playgroud)
但是此代码仅适用于API 11及更高版本.
任何人都可以帮助我,以便我可以制作一个支持GingerBread的弹出菜单吗?
我正在使用具有以下属性的警报对话框.问题是当我单击后退按钮或触摸对话框外我不想要那个对话框是不行的.我怎么能解决这个问题因为setCancelable没有帮助.
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.check_internet);
builder.setCancelable(false);
Run Code Online (Sandbox Code Playgroud) 我使用ProgressDialog向用户显示他必须等待并且在用户必须等待时使我的应用程序的表面"不可触及".我在progressDialog中添加了一个Button,如果某些条件为真,它应该启动一些操作.问题是,每次用户按下按钮时,progressDialog都会自动被解除.即使没有触发任何动作.如何在调用onClick时阻止progressDialog被解雇?
感谢和问候
编辑:
connectingDialog = new ProgressDialog(this);
connectingDialog.setCancelable(false);
connectingDialog.setCanceledOnTouchOutside(false);
connectingDialog.setButton(DialogInterface.BUTTON_NEUTRAL, "start", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
/*if(isPrepared)
startGame();*/
connectingDialog.show(); // does not work, too
}
});
connectingDialog.show();
Run Code Online (Sandbox Code Playgroud) android progressdialog android-button android-dialog onclicklistener
我已经创建了自己的自定义对话框,它工作正常,但我想将灰色背景更改为自定义图案(例如图像文件或xml形状).我怎样才能做到这一点?
请注意,我不想改变调光强度,但我只想要,这种调光可以用图案代替
我试图获得DialogFragment运行时的宽度,我尝试了两种失败的方法.
第一:onCreateDialog创建对话框后的内部
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
...
...
AlertDialog dialog = builder.create();
width = dialog.getWindow().getAttributes().width;
return dialog;
}
Run Code Online (Sandbox Code Playgroud)
width 设置为-1
第二:
public void onStart() {
width = getDialog().getWindow().getAttributes().width;
}
Run Code Online (Sandbox Code Playgroud)
width 设为-2
我正在显示一个带有确定/取消按钮的简单警报对话框.当用户单击"确定"时,会运行一些代码 - 这需要一个参数.
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
alertDialogBuilder
.setTitle("Are you sure?")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//TODO: Do something with parameter.
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
Run Code Online (Sandbox Code Playgroud)
如何将参数传递给AlertDialog?
好奇心问题在这里。
我使用了很多对话框构建器,大多数情况下,我的否定取消按钮除了关闭对话框外什么也不做。我在网上随处可见的代码是这样的:
builder.setNegativeButton(
"cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}
);
Run Code Online (Sandbox Code Playgroud)
我碰巧发现这段代码做的完全一样:
builder.setNegativeButton("cancel", null);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:这是一个不习惯手动关闭对话框的坏习惯吗?如果是,为什么呢?