AlertDialog错误字符串资源ID#0x1

时间:2016-02-28 04:53:40

标签: java android sqlite

我正在构建一个应用程序,在您输入一些参数(P1,P2,P3)并单击“保存”后,将弹出一个请求数字的AlertDialog,在此编号中的用户键之后,程序将输入信息(P1, P2,P3)在SQLite寄存器表T1中。它将创建与用户在SQLite T2中的AlertDialog中定义的条目一样多的数据。

基本上我有下一个代码:

function updateactive() {
    var clickedA = event.currentTarget,
        newAttrValue = $(clickedA).attr('data-request-data').replace("active:'0'", "active:'1'");

    $(clickedA).attr('data-request-data', newAttrValue);
}

目前我收到下一个错误,只创建了T1中的条目 致命的例外:

 switch(item.getItemId()){
        case R.id.Save:

            final String UpdateStudyCode = eStudyCode.getText().toString();
            final String UpdateStudyDescription = eStudyDescription.getText().toString();
            final String UpdateStudyAnalyst = eStudyAnalyst.getText().toString();

            if( l == 0){
            //New Register Study
                if (UpdateStudyCode == ""){
                    Toast.makeText(getApplicationContext(), "Empty Study Code", Toast.LENGTH_SHORT).show();
                }
                else{                       
                    AlertDialog.Builder dialogCreateElements = new AlertDialog.Builder(this);

                    dialogCreateElements.setIcon(android.R.drawable.ic_dialog_alert);
                    dialogCreateElements.setTitle(getResources().getString(R.string.element_create_title));
                    dialogCreateElements.setMessage(getResources().getString(R.string.element_create_messaje));
                    final EditText inputelementstarget = new EditText(this);
                    //dialogCreateElements.setInputType(InputType.TYPE_CLASS_PHONE);
                    //dialogCreateElements.setRawInputType(Configuration.KEYBOARD_12KEY);
                    dialogCreateElements.setView(inputelementstarget);
                    dialogCreateElements.setCancelable(false);
                    dialogCreateElements.setPositiveButton(getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() {   
                        public void onClick(DialogInterface dialog, int whichButton) {
                            // TODO Auto-generated method stub
                            database db = new database (studydetail.this);
                            db.open();
                            //Create Study
                            long studyid;
                            studyid = db.createEntryStudy(UpdateStudyCode,UpdateStudyDescription,UpdateStudyAnalyst);
                            //Create number of specific elements 
                            int element=1;
                            String value = inputelementstarget.getText().toString();
                            int target = Integer.parseInt(value);
                            do
                            {
                                Toast.makeText(getApplicationContext(), element, Toast.LENGTH_SHORT).show();
                                db.createEntryElements(element, studyid);
                                element++;
                            }
                            while (element < target+1);

                            db.close();

                            Toast.makeText(studydetail.this, R.string.element_create_confirmation, Toast.LENGTH_SHORT).show();
                            setResult(RESULT_OK);

                        }
                    });

                  dialogCreateElements.setNegativeButton(android.R.string.no, null);
                  dialogCreateElements.show();

3 个答案:

答案 0 :(得分:0)

为了给你提供信息,错误就在这一行,

 String value = inputelementstarget.getText().toString();

我没有找到您实际初始化此inputelementstarget的位置。 实际上这不是你需要的初始化

final EditText inputelementstarget = new EditText(this);

我认为您正试图在EditText中添加AlertDialog

为此目的,你需要做的是

  • 创建一个包含EditText的布局。
  • 像这样膨胀

    LayoutInflater li = LayoutInflater.from(context); View promptsView = li.inflate(R.layout.prompts, null);

  • 然后你必须初始化

    final EditText userInput = (EditText) promptsView .findViewById(R.id.editTextDialogUserInput);

对于完整参考,请查看here。请参阅this回答。你会得到很多信息。

答案 1 :(得分:0)

你需要这样做:

  1. Toast 消息必须为字符串格式。
  2. Toast.makeText(getApplicationContext(), element, Toast.LENGTH_SHORT).show();

    元素必须为字符串当前 整数

    1. Toast.makeText(studydetail.this, R.string.element_create_confirmation, Toast.LENGTH_SHORT).show();
    2. Toast.makeText(studydetail.this, getString(R.string.element_create_confirmation), Toast.LENGTH_SHORT).show();

      希望这会对你有所帮助。

答案 2 :(得分:0)

如果要在以下位置显示element值,则会发生错误:

Toast.makeText(getApplicationContext(), element, Toast.LENGTH_SHORT).show();

如果您想显示element变量值,请改用String.valueOf(element),如下所示:

Toast.makeText(getApplicationContext(), String.valueOf(element) , Toast.LENGTH_SHORT).show();

你会得到理想的结果。

希望这会有所帮助!!