2017-07-19 225 views
-1

我已經開了一個自定義對話框內的按鈕長按的,那 定製對話框裏面我有兩個按鈕和一個編輯文本的長按後出現定製對話框內工作。我想改變我已經與我的自定義對話框內編輯文本獲取名稱longpressed按鈕的名稱,該按鈕不起作用。按鈕沒有被按鈕

public void initializeLPButtons(Button[] btns, int[] rArrays) { 

    for(i=0; i<btns.length; i++) { 

     btns[i] = (Button) findViewById(rArrays[i]); 
     btns[i].setOnLongClickListener(new View.OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View v) { 

       renameBtn(); 
       return true; 
      } 
     }); 
    } 
} 

public void renameBtn() { 

    final AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); 
    dialog.setView(R.layout.dialog_renamebtn); 
    dialog.setTitle("Rename Button..."); 
    dialog.setMessage("Rename The Button To:"); 

    LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
    final View dialogView = inflater.inflate(R.layout.dialog_renamebtn, null); 

    renameEt = (EditText) dialogView.findViewById(R.id.renameEt); 
    renameBtn = (Button) dialogView.findViewById(R.id.renameBtn); 
    cnclRenameBtn = (Button) dialogView.findViewById(R.id.cnlRenameBtn); 

    cnclRenameBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     } 
    }); 

    renameBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      renameBtnTxt(); 
     } 
    }); 

    dialog.show(); 
} 

public void renameBtnTxt() { 

    if (renameEt.getText().toString().length() > 0) { 
     btns[i].setText(renameEt.getText().toString()); 
    }else { 
     Toast.makeText(MainActivity.this, "Please choose a name.", 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

我不認爲我的代碼有問題。請如果它是用java的東西幫我找到它。

回答

1

這樣創建您的對話框:

private void CreateGetPhoneNumDialog() { 
     Dialog PhoneNumberDialog = new Dialog(getActivity()); 
     PhoneNumberDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     PhoneNumberDialog.setContentView(R.layout.mobile_number_pop_message); 
     PhoneNumberDialog.setCancelable(false); 
} 

獲取的EditText和創建對話框

etDialogPhoneNum = (EditText) PhoneNumberDialog.findViewById(R.id.et_DialogCustomerPhone); 
btnGetPhoneNum = (Button) PhoneNumberDialog.findViewById(R.id.btn_DialogGetPhoneNum); 

然後在點擊監聽器設置對話框的按鈕

btnGetPhoneNum.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Do your work here 
     } 
}); 

mobile_number_pop_message後按鈕的參考。 XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="300dp" 
    android:background="@color/White" 
    android:layout_height="wrap_content" 
    > 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="53dp" 
     android:id="@+id/et_DialogCustomerPhone" 
     android:inputType="phone" 
     android:background="@null" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:maxLength="9" 
     android:hint="512345678" 
     android:gravity="start|center_vertical" 
     android:layout_gravity="start|center_vertical" 
    /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:gravity="center" 
     android:text="@string/str_UpdatePhoneNumber" 
     android:textAllCaps="true" 
     android:layout_gravity="center" 
     android:id="@+id/btn_DialogGetPhoneNum" 
    /> 

</LinearLayout> 

編輯:

而且表明這樣的對話:

PhoneNumberDialog.show(); 
+0

這個工作,但它需要dialog.show了。 我不知道爲什麼有人打進減去我的問題。 – Shahryar

+0

是的,我忘了補充一點,感謝您指出。我編輯了我的答案。 – AndroidGeek