/ / Wie kann ich OnClickListener auf die Schaltfläche innerhalb der Klasse setzen, die OnClickListener implementiert - android, android-studio, onclicklistener

Wie kann ich OnClickListener auf die Schaltfläche innerhalb der Klasse setzen, die OnClickListener implementiert - Android, Android-Studio, OnClicklistener

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 № 1

Fü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" >