2017-06-16 3 views
-1

警告ダイアログ内のボタンにOnClickListenerを設定したいとします。 コンテキストとしてコンテキストを使用していますが、動作しません。そのボタンをタッチするたびにアプリケーションが動作しなくなるのは、私のコードです。OnClickListenerをOnClickListenerを実装するクラスの中のボタンに設定する方法

致命的な例外:メイン プロセス:com.hwp.myprototype、PID: 問題ボタンは、警告ダイアログに

public class OnOrderClickListener implements View.OnClickListener { 
Context context; 

@Override 
public void onClick(View v) { 
    context = v.getRootView().getContext(); 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View addOrderForm = inflater.inflate(R.layout.order_add, null, false); 
    EditText orderId = (EditText) addOrderForm.findViewById(R.id.orderIdentifierEditText); 
    Button addItemToOrder = (Button) addOrderForm.findViewById(R.id.addItem); 
    addItemToOrder.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(),OnClickForAddProductToOrder.class); 
      v.getContext().startActivity(intent); 
     } 
    }); 
    new AlertDialog.Builder(context) 
      .setView(addOrderForm) 
      .setTitle(R.string.order) 
      .setPositiveButton(R.string.add_product_positive_button, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }).show(); 
} 

}

Logcat示しorder_add.xmlである10753 android.content.ActivityNotFoundException:明示的に見つからない アクティビティクラス {com.hwp.myprototype/com.hwp.myprototype.OnClickForAddProductToO rder}; AndroidManifest.xmlでこのアクティビティを宣言しましたか? でandroid.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1854) android.app.Instrumentation.execStartActivity android.app.Activity.startActivityForResultで(Instrumentation.java:1545) (Activity.java:4283)で

私は誰かが私を解決するのを助けることを望みます。前もって感謝します。

+0

がエラーを投稿.. –

+0

使用中のコードの下に追加 OnClickForAddProductToOrderマニフェストで定義されていない活動でありますOnOrderClickListener.thisコンテキストの代わりに –

+0

@DivyeshPatel私はすでにそれを試しても動作しません – Iwan

答えて

0

まずマニフェストファイルにあなたの活動を追加します。

<application 
    ...> 

    <activity 
     android:name=".OnOrderClickListener" /> 

</application> 

あなたは新しいView.OnClickListenerを(使用している場合はView.OnClickListenerを実装する必要はありません):

Button addItemToOrder = (Button) addOrderForm.findViewById(R.id.addItem); 
addItemToOrder.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(v.getContext(),OnClickForAddProductToOrder.class); 
     v.getContext().startActivity(intent); 
    } 
}); 

ただし、View.OnClickListenerを実装する場合は、新しいView.Onを使用する必要はありませんaddItemToOrder.setOnClickListener()内のClickListener()。あなたがしなければならないことはこれです:

Button addItemToOrder = (Button) addOrderForm.findViewById(R.id.addItem); 
addItemToOrder.setOnClickListener(this); 
... 

@Override 
public void onClick(View v) { 
    int id = v.getId(); 
    switch (id) { 
     case R.id.addItem: 
      Intent intent = new Intent(v.getContext(),OnClickForAddProductToOrder.class); 
      v.getContext().startActivity(intent); 
      break; 
     default: 
      break; 
    } 
} 
0

マニフェストファイルでOnClickForAddProductToOrderアクティビティを追加してください。

0

マニフェストのアプリケーションタグにアクティビティ(OnClickForAddProductToOrder)を追加します。

例:

<activity android:name="OnClickForAddProductToOrder" > 
1

問題は

は、だからあなたのマニフェスト

<activity 
android:name=".OnClickForAddProductToOrder" 
android:label="Add Products" 
android:theme="@style/AppTheme.NoActionBar"></activity> 
関連する問題