2017-07-19 16 views
-1

ボタンのlongPress内にカスタムダイアログを開いた そのカスタムダイアログ内には2つのボタンと1つの編集テキストがあります。私は、私がカスタムダイアログ内の編集テキストから得た名前で長押ししたボタンの名前を変更したい、ボタンが機能していない。ボタンを長押しした後に表示されるカスタムダイアログ内でボタンが機能しない

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し、ダイアログのボタン

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

mobile_number_pop_messageにクリックリスナーで設定ダイアログ

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

を作成した後、ボタンの参照を。 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

関連する問題