¿Cómo setContentView en un fragmento?
Ahora tengo este fragmento que quiero usar setContentView con pero hasta ahora no puedo encontrar cómo. Usted puede ver mi caso en el código de abajo, no estoy tratando de inflar un diseño, estoy tratando de usarlo con la vista llamada SampleView. Entonces, ¿cómo puedo hacer eso? Gracias por adelantado
public class largeImageScroller extends SherlockFragment { // Physical display width and height. private static int displayWidth = 0; private static int displayHeight = 0; /** Called when the activity is first created. */ public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) { getActivity(); // displayWidth and displayHeight will change depending on screen // orientation. To get these dynamically, we should hook onSizeChanged(). // This simple example uses only landscape mode, so it's ok to get them // once on startup and use those values throughout. Display display = ((WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); displayWidth = display.getWidth(); displayHeight = display.getHeight(); // SampleView constructor must be constructed last as it needs the // displayWidth and displayHeight we just got. setContentView(new SampleView(this)); } private static class SampleView extends View { private static Bitmap bmLargeImage; //bitmap large enough to be scrolled private static Rect displayRect = null; //rect we display to private Rect scrollRect = null; //rect we scroll over our bitmap with private int scrollRectX = 0; //current left location of scroll rect private int scrollRectY = 0; //current top location of scroll rect private float scrollByX = 0; //x amount to scroll by private float scrollByY = 0; //y amount to scroll by private float startX = 0; //track x from one ACTION_MOVE to the next private float startY = 0; //track y from one ACTION_MOVE to the next public SampleView(Context context) { super(context); // Destination rect for our main canvas draw. It never changes. displayRect = new Rect(0, 0, displayWidth, displayHeight); // Scroll rect: this will be used to 'scroll around' over the // bitmap in memory. Initialize as above. scrollRect = new Rect(0, 0, displayWidth, displayHeight); // Load a large bitmap into an offscreen area of memory. bmLargeImage = BitmapFactory.decodeResource(getResources(), R.drawable.ground_floor_b); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // Remember our initial down event location. startX = event.getRawX(); startY = event.getRawY(); break; case MotionEvent.ACTION_MOVE: float x = event.getRawX(); float y = event.getRawY(); // Calculate move update. This will happen many times // during the course of a single movement gesture. scrollByX = x - startX; //move update x increment scrollByY = y - startY; //move update y increment startX = x; //reset initial values to latest startY = y; invalidate(); //force a redraw break; } return true; //done with this event so consume it } @Override protected void onDraw(Canvas canvas) { // Our move updates are calculated in ACTION_MOVE in the opposite direction // from how we want to move the scroll rect. Think of this as dragging to // the left being the same as sliding the scroll rect to the right. int newScrollRectX = scrollRectX - (int)scrollByX; int newScrollRectY = scrollRectY - (int)scrollByY; // Don't scroll off the left or right edges of the bitmap. if (newScrollRectX < 0) newScrollRectX = 0; else if (newScrollRectX > (bmLargeImage.getWidth() - displayWidth)) newScrollRectX = (bmLargeImage.getWidth() - displayWidth); // Don't scroll off the top or bottom edges of the bitmap. if (newScrollRectY < 0) newScrollRectY = 0; else if (newScrollRectY > (bmLargeImage.getHeight() - displayHeight)) newScrollRectY = (bmLargeImage.getHeight() - displayHeight); // We have our updated scroll rect coordinates, set them and draw. scrollRect.set(newScrollRectX, newScrollRectY, newScrollRectX + displayWidth, newScrollRectY + displayHeight); Paint paint = new Paint(); canvas.drawBitmap(bmLargeImage, scrollRect, displayRect, paint); // Reset current scroll coordinates to reflect the latest updates, // so we can repeat this update process. scrollRectX = newScrollRectX; scrollRectY = newScrollRectY; } } }
- ¿Es la mejor práctica para crear un botón como este en una aplicación de Android?
- Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
- ¿Cómo puedo reducir y deslizar una vista en el ángulo superior izquierdo?
- Cómo obtener todos los niños (visible e invisible) de un ListView?
- Atributos XML personalizados sin vista personalizada en Fragmento
- View.getContext devuelve null, ¿por qué?
- Cómo enviar datos de la Actividad al Fragmento
- Animación de traducción para ocultar Vista
- OnBackStackChanged () se llama dos veces cuando se agrega nuevo fragmento en backstack
- ViewTreeObserver no llama a onScrollChanged después de agregar OnScrollChangedListener
- Vinculación de datos bidireccionales: falta el tipo definido por el usuario
- ObjectAnimator con la propiedad scale hace bg black?
- Android Canvas OpenGL Renderer está sin memoria
Usted no llama a setContentView
en fragmentos, de hecho usted necesita volver una View
de onCreateView
.
Prueba a sustituir:
setContentView(new SampleView(this));
Con este:
return new SampleView(this);
Devuelva la instancia de vista que desea utilizar:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.ads_tab, container, false); }
También no es seguro llamar a getActivity()
de onCreateView()
. Asegúrese de llamarla en o después de onActivityCreated()
, ya que en este momento su Fragment
está totalmente asociado con la Activity
. Compruebe el ciclo de vida del Fragment
.
Fragmentos
En las actividades necesitamos establecer la vista usando setContentView(R.layout.main)
Donde como en fragmentos necesitamos anular onCreateView()
para establecer la vista deseada.
- Cómo poner el texto a la izquierda de un botón de radio en android
- Javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake abortado: Fallo en la biblioteca SSL, generalmente un error de protocolo