Ich möchte OnClickListener auf diese Schaltfläche setzenim Alarmdialogfeld. Ich verwende Kontext als Parameter, aber es funktioniert nicht. Die Anwendung funktioniert nicht mehr, wenn ich auf diese Schaltfläche tippe. Die Problem-Schaltfläche befindet sich in order_add.xml, die im Alert-Dialog angezeigt wurde
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();
}
}
Logbuch:
FATALE AUSNAHME: Haupt Prozess: com.hwp.Myprototyp, PID: 10753 android.content.ActivityNotFoundException: Kann nicht explizit finden Aktivitätsklasse {com.hwp.myprototype / com.hwp.myprototype.OnClickForAddProductToOrder}; Haben Sie diese Aktivität in Ihrem AndroidManifest.xml deklariert? beim android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1854) beim android.app.Instrumentation.execStartActivity (Instrumentation.java:1545) bei android.app.Activity.startActivityForResult (Activity.java:4283)
Ich hoffe, jemand kann mir helfen, dieses Problem zu lösen. Danke im Voraus.
Antworten:
0 für die Antwort № 1Fügen Sie zunächst Ihre Aktivität zu Ihrer Manifestdatei hinzu:
<application
...>
<activity
android:name=".OnOrderClickListener" />
</application>
Sie müssen View.OnClickListener nicht implementieren, wenn Sie den neuen View.OnClickListener () verwenden:
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);
}
});
Wenn Sie jedoch View.OnClickListener implementieren möchten, müssen Sie in AddItemToOrder.setOnClickListener () keinen neuen View.OnClickListener () verwenden. Was Sie tun müssen, ist folgendes:
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;
}
}
1 für die Antwort № 2
Das Problem ist eine Aktivität, die nicht in Manifest definiert ist OnClickForAddProductToOrder
Fügen Sie in Ihrem Manifest den folgenden Code hinzu
<activity
android:name=".OnClickForAddProductToOrder"
android:label="Add Products"
android:theme="@style/AppTheme.NoActionBar"></activity>
0 für die Antwort № 3
Fügen Sie die OnClickForAddProductToOrder-Aktivität in der Manifestdatei hinzu.
0 für die Antwort № 4
Fügen Sie Ihre Aktivität (OnClickForAddProductToOrder) im Anwendungstag in Ihr Manifest
Beispiel:
<activity android:name="OnClickForAddProductToOrder" >