我想将OnClickListener设置为我在警告对话框内的按钮。 我使用上下文作为参数,但它不起作用。每次触摸该按钮时,应用程序停止工作是我的代码。 问题按钮位于alert_add.xml中,显示在警告对话框中
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.OnClickForAddProductToOrder}; 你有没有在AndroidManifest.xml中声明这个活动? 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1854) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1545) 在android.app.Activity.startActivityForResult(Activity.java:4283)
我希望有人可以帮我解决这个问题。提前谢谢。
答案 0 :(得分:1)
问题是未在清单中定义的活动 OnClickForAddProductToOrder
在你的Manifest中添加以下代码
<activity
android:name=".OnClickForAddProductToOrder"
android:label="Add Products"
android:theme="@style/AppTheme.NoActionBar"></activity>
答案 1 :(得分:0)
请在清单文件中添加OnClickForAddProductToOrder活动。
答案 2 :(得分:0)
在清单中的应用标记中添加您的活动(OnClickForAddProductToOrder)。
示例:
Access to undeclared static property:
答案 3 :(得分: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,则无需在addItemToOrder.setOnClickListener()中使用新的View.OnClickListener()。你要做的是:
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;
}
}