2017-06-16 96 views
-1

我想設置OnClickListener我的按鈕,內部警報對話框。 我使用上下文作爲參數,但它不起作用。每當我觸摸那個按鈕時,應用程序停止工作就是我的一段代碼。 問題按鈕處於order_add.xml,在警報對話框顯示我如何設置OnClickListener實現OnClickListener的類內的按鈕

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的:

致命異常:主 工藝:com.hwp.myprototype,PID:10753 android.content.ActivityNotFoundException:無法找到顯式 活動類 {com.hwp.myprototype/com.hwp.myprototype.OnClickForAddProductToO刻申}; 你是否在你的AndroidManifest.xml中聲明瞭這個活動? 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1854) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1545) 在android.app.Activity.startActivityForResult(Activity.java:4283)

我希望有人能幫我解決這個問題。提前致謝。

+0

發佈錯誤.. –

+0

使用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 ClickListener()在addItemToOrder.setOnClickListener()中。你必須做的是這樣的:

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

問題是在清單沒有定義OnClickForAddProductToOrder活動

所以添加下面的代碼在你的清單

<activity 
android:name=".OnClickForAddProductToOrder" 
android:label="Add Products" 
android:theme="@style/AppTheme.NoActionBar"></activity> 
相關問題