2017-02-15 6 views
2

IDなしでフラグメント(framelayout)を見つける方法はありますか?どのように私はアンドロイドのIDなしフラグメントを使用することができますか?

private void setRect(int _x, int _y, int _w, int _h){ 

     final Rect rect = new Rect(_x,_y,_w,_h); 

     final PSPDFConfiguration configuration = new PSPDFConfiguration.Builder(BuildConfig.PSPDFKIT_LICENSE_KEY) 
       .scrollDirection(PageScrollDirection.HORIZONTAL) 
       .build(); 

     final Uri assetFile = Uri.parse("file:///android_asset/psp.pdf"); 

     final FrameLayout frameLayout = new FrameLayout(thisContext); 

     runOnUiThread(new Thread(new Runnable() { 
      @Override 
      public void run() { 

       frameLayout.setId(View.generateViewId()); 

       FrameLayout.LayoutParams params; 

       params = new FrameLayout.LayoutParams(rect.right-rect.left,rect.bottom-rect.top); 
       params.leftMargin = rect.left; 
       params.topMargin = rect.top; 
       params.gravity = 0; 

       frameLayout.setLayoutParams(params); 

       viewer_one.setLayoutParams(params); 
       viewer_one.getSettings().setBuiltInZoomControls(true); 
       viewer_one.setBackgroundColor(Color.BLUE); 

       thisActivity.addContentView(viewer_one,params); 

       PSPDFFragment fragment; 

       FragmentManager manager = getSupportFragmentManager(); 

       fragment = (PSPDFFragment) manager.findFragmentById(frameLayout.getId()); 

       if(fragment == null){ 
        fragment = PSPDFFragment.newInstance(assetFile,configuration); 

        getSupportFragmentManager() 
          .beginTransaction() 
          .replace(frameLayout.getId(), fragment) 
          .commit(); 
       } 

      } 
     })); 


    } 

私は私のレイアウトXMLででframeLayoutを使用しないでください:

は、ここに私のコードです。

更新:

私は自分のコードを更新し、このエラーを取得している - >のid 0x1のが見つかりませんビュー(不明)フラグメントPSPDFFragment {373f9470

+0

「findFragmentByTag」? – pskink

+0

例?私はタグを知っていません:( – Tarasov

+0

あなたはID、タグがないので何を持っていますか?匿名のフラグメントは何のために必要ですか? – pskink

答えて

2

Set an ID to a view programatically

割り当てIDのコード経由で(プログラムによって)

ids usin g someView.setId(int); intは正でなければなりませんが、それ以外の場合は任意です。恐ろしい場合は、読み続けることができます。 たとえば、アイテムを表すいくつかのビューを作成し番号を付ける場合は、アイテム番号を使用できます。

これはそれを行う必要があります。 IDを取得しました。これをフラグメントマネージャーに使用します。お役に立てれば。

関連する問題