カスタムクラスから、活動中の関数を呼び出すと、PagerAdapterを拡張し、私の顧客のクラスである:私のActivity2では以下
public class CustomPagerAdapter extends PagerAdapter {
private Context mContext;
private Vector<View> pages;
private static activity2 act2;
public CustomPagerAdapter(Context context, Vector<View> pages) {
this.act2 = new activity2();
this.mContext=context;
this.pages=pages;
}
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
View page = pages.get(position);
page.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//Log.i("TAG", "This page was clicked: " + position);
act2.receiptAction(position, mContext);
return false;
}
});
container.addView(page);
return page;
}
}
コード(CustomPagerAdapterからコールする必要がある)
public void receiptAction(final Integer CurrentPage, final Context tContext){
if (CurrentPage > 0) {
final ApplicationInfo thContext = tContext.getApplicationInfo();
final AlertDialog.Builder dlgAlert = new AlertDialog.Builder(tContext.getApplicationContext());
dlgAlert.setTitle("Receipt");
dlgAlert.setMessage(receiptPool.get(CurrentPage));
dlgAlert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//();
//startActivity(lastcreated.getIntent()); //REFRESH INTENT
}
});
if (!receiptPool.get(CurrentPage).contains("_(Canceled)")) {
dlgAlert.setNeutralButton("Void", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dlgAlert.create().cancel();
final AlertDialog.Builder dlgAlert2 = new AlertDialog.Builder(tContext.getApplicationContext());
dlgAlert2.setTitle("Void ?");
dlgAlert2.setMessage(receiptPool.get(CurrentPage));
dlgAlert2.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
cancelOrder(receiptPool.get(CurrentPage), dlgAlert2);
}
});
dlgAlert2.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//();
//startActivity(lastcreated.getIntent()); //REFRESH INTENT
}
});
dlgAlert2.setCancelable(true);
dlgAlert2.create().show();
}
});
}
dlgAlert.setNegativeButton("Rebet", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
finish();
MainActivity.currentReceipt = receiptPool.get(CurrentPage);
MainActivity.isRebet = true;
intent = new Intent(tContext.getApplicationContext(), activity1.class);
startActivityForResult(intent, 0);
}
});
dlgAlert.setCancelable(true);
dlgAlert.create().show();
}
}
しかし、
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:310)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253)
at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:76)
at android.support.v7.app.AlertController.installContent(AlertController.java:213)
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240)
at android.app.Dialog.dispatchOnCreate(Dialog.java:463)
at android.app.Dialog.show(Dialog.java:288)
at com.M28.activity2.receiptAction(activity2.java:633)
at com.xsys.xobj.CustomPagerAdapter$1.onTouch(CustomPagerAdapter.java:37)
at android.view.View.dispatchTouchEvent(View.java:8956)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2698)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2410)
at android.widget.AbsListView.dispatchTouchEvent(AbsListView.java:5303)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2559)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1767)
at android.app.Activity.dispatchTouchEvent(Activity.java:2866)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2520)
at android.view.View.dispatchPointerEvent(View.java:9167)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4706)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4544)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4201)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4258)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl.deliverInputEvent(ViewRoot
私はCustomPagerAdapterからActivity2の関数を呼び出すことができますか?そのような
public static void receiptAction(final Integer CurrentPage, final Context tContext)
に
マニフェストをアップロードできますか? – sharan
というエラーは、あなたが実際に求めているものよりもテーマに関係しています。私はあなたのアクティビティでAppCompatActivityを拡張する必要があり、また、テーマには親がTheme.AppCompatに設定されている必要があります。最新のサポートライブラリを試してみてください。サポートlib v23.2.0に文書化されている問題があります。 –
私のアクティビティ2が拡張されていますAppCompatActivity –