如何在 android 中使用没有 ID 的片段?
How I can use a Fragment without a id in android?
如何找到没有id的片段(framelayout)?
这是我的代码:
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。
更新:
我已经更新我的代码并收到此错误 -> 找不到片段 PSPDFFragment 的 ID 0x1(未知)的视图{373f9470
Set an ID to a view programatically
通过代码分配 id(以编程方式)
使用 someView.setId(int);
手动设置 ID
int 必须是正的,但在其他方面是任意的——它可以是你想要的任何东西(如果这很可怕,请继续阅读。)
例如,如果创建多个表示项目的视图并为其编号,您可以使用它们的项目编号。
这应该可以做到。现在您有了一个 ID,将它用于片段管理器。希望这有帮助。
如何找到没有id的片段(framelayout)?
这是我的代码:
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。
更新:
我已经更新我的代码并收到此错误 -> 找不到片段 PSPDFFragment 的 ID 0x1(未知)的视图{373f9470
Set an ID to a view programatically
通过代码分配 id(以编程方式)
使用 someView.setId(int);
手动设置 ID
int 必须是正的,但在其他方面是任意的——它可以是你想要的任何东西(如果这很可怕,请继续阅读。)
例如,如果创建多个表示项目的视图并为其编号,您可以使用它们的项目编号。
这应该可以做到。现在您有了一个 ID,将它用于片段管理器。希望这有帮助。