2016-05-01 16 views
0

カスタムクラスから、活動中の関数を呼び出すと、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) 

+0

マニフェストをアップロードできますか? – sharan

+0

というエラーは、あなたが実際に求めているものよりもテーマに関係しています。私はあなたのアクティビティでAppCompatActivityを拡張する必要があり、また、テーマには親がTheme.AppCompatに設定されている必要があります。最新のサポートライブラリを試してみてください。サポートlib v23.2.0に文書化されている問題があります。 –

+0

私のアクティビティ2が拡張されていますAppCompatActivity –

答えて

0

、すなわち最後に、私は、このためのソリューションを持って、ファイサルシェイク(Dialog in Custom Adapter in android)によって与えられた答えをチェックしてください

0

この公開ボイドreceiptAction(最終整数currentPageに、最終的なコンテキストtContext)方法の変更は、それがこの

Activity2.receiptAction(current_page_number, mContext); 
+0

alert2ialogアクションでActivity2の他の関数を呼び出す必要があるので、静的に設定できません。 –

0
android:theme="@style/AppTheme.NoActionBar" 

のコード上の使用のようCustomPagerAdapterから呼び出しますActivity2のマニフェスト

+0

私のカスタムクラスから、私のActivity2でalertDialog関数を呼び出すよう求めています... –

+0

申し訳ありませんがあなたの質問を得る。 Activity2のマニフェストにテーマを追加してみてください。 –

0

のGradleファイルにAPPCOMPATライブラリとサポートライブラリを確認してください、あなたが含まれていない可能性があり、これらのライブラリは

dependencies 
{ 
    compile 'com.android.support:support-v4:18.0.+' 
    compile 'com.android.support:appcompat-v7:18.0.+' 
}