2017-02-21 7 views
0

カスタムアダプタを使用してlistviewに連絡先を表示しています。アイテムをクリックするとカスタムダイアログを開くonClick関数を作成します。その後、私はダイアログボックスから連絡先番号を取得したいが、エラーポップアップを取得しようとするとき。Androidのカスタムダイアログから値を取得

IllegalStateException: Could not execute method for android:onClick 

カスタムダイアログカスタムからアダプタ

// Other code 
// This code is working fine problem is in activity class 
public void onClick(View v) { 
       Toast.makeText(context, "Item click", Toast.LENGTH_SHORT).show(); 
       String phoneNumber = phone.getText().toString(); 
       String userName = name.getText().toString(); 
       final Dialog dialog = new Dialog(context); 
       dialog.setContentView(R.layout.custom_dialog); 
       dialog.setTitle(userName); 
       EditText etxtContactNumber = (EditText) dialog.findViewById(R.id.etxtContactNumber); 
       etxtContactNumber.setText(phoneNumber); 
       dialog.show(); 
      } 
// reset of the code 

カスタムダイアログ

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:text="Name" 
    android:ems="10" 
    android:id="@+id/etxtContactNumber" /> 

<Button 
    android:text="Send SMS" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/btnSendMessage" 
    android:onClick="sendMessage" /> 

<Button 
    android:text="Phone Call" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/btnPhoneCall" 
    android:onClick="phoneCall" /> 

主な活動

protected void sendMessage(View view){ 
    Toast.makeText(this, "Send Message", Toast.LENGTH_SHORT).show(); 
    EditText etxtContactNumber = (EditText) view.findViewById(R.id.etxtContactNumber); 
    String phoneNumber = etxtContactNumber.getText().toString(); 
    String uri= "smsto:"+phoneNumber; 
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri)); 
    startActivity(intent); 
} 

私はエラーの理由を知っていますetxtContactNumberはこのビューにありません。これは主なアクティビティビューではなく、どのように取得できるのですか。
カスタムアダプタとMainActivity両方2つの異なるファイルです

+0

「パブlic void sendMessage' –

+0

'public'が動作していません –

答えて

0

あなたは

カスタムアダプタをcustomAdapterでdialogを作成し、MainActivityの値はちょうどpublic staticとしてダイアログを作成して取得し、請負業者にそれを初期化したい場合

​​

主な活動

dialog.findViewById(R.id.etxtContactNumber); 
0

View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_filter, parent, false); 

、その後

EditText etxtContactNumber = (EditText)v.findViewById(R.id.etxtContactNumber); 
0

あなたは必要ありませんした後で、カスタムビューをinfalteするために私たちに以下の行をしてくださいカスタムアダプターからのetxtContactNumberテキスト

onCreate()でcustomDialog.javaクラスを作成し、以下のコードを作成する必要があります。

setContentView(R.layout.custom_dialog); 
setTitle(userName); 
EditText etxtContactNumber =(EditText)findViewById(R.id.etxtContactNumber); 
etxtContactNumber.setText(phoneNumber); 

カスタムアダプターのonClickで以下のコードを実行する必要があります。

これが問題を解決します。

関連する問題