Obtener instancia de actividad
Disculpe por la simple pregunta, soy completamente novato java y desarrollador android. ¿Cómo puedo obtener la instancia de Activity en setCameraDisplayOrientation cuando se llama a surfaceChanged?
public class MyActivity extends Activity { private Camera mCamera; private CameraPreview mPreview; public final int cameraId = 0; public Activity activity = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); activity = this; // Create an instance of Camera mCamera = getCameraInstance(); // Create our Preview view and set it as the content of our activity. mPreview = new CameraPreview(this, mCamera); FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); preview.addView(mPreview); } public void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) { } public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private Camera mCamera; ... public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { ... setCameraDisplayOrientation(activity, cameraId, mCamera); .... } } }
- La actividad continúa reiniciándose cuando cambia la orientación
- Error de traducción no capturada: com.android.dx.cf.code.SimException
- Android: Entender resource-id en R.java
- Biblioteca OCR para reconocer números en el dispositivo de medición
- ¿Cómo imprimir desde la impresora térmica en Android?
- Descripción de los mensajes de Android GC
- Cómo medir con precisión el tamaño en píxeles del texto que se está dibujando en un lienzo por drawTextOnPath ()
- Cómo crear vinculación de datos personalizados en android? (Estudio del androide)
- OnInterceptTouchEvent sólo obtiene ACTION_DOWN
- Registrarse como reproductor de música y reproducir canciones
- Cómo implementar pestañas ahora que TabActivity está obsoleto
- Lectura de un archivo de texto línea por línea en android
- Parcel Lista de Lista de objeto Parcelable
Esta es una manera de evitar pérdidas de memoria mediante la variable estática: hacer referencia estática débil a la instancia de actividad que se establecerá en el método onCreate (Bundle).
-
Escriba en su clase secundaria algo como a continuación:
public Class SecondClass { private static WeakReference<Activity> mActivityRef; public static void updateActivity(Activity activity) { mActivityRef = new WeakReference<Activity>(activity); }
-
Luego, en el método onCreate (Bundle) de su clase de actividad:
@Override onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SecondClass.updateActivity(this); ... }
-
Utilice la instancia de actividad de esta manera:
mActivityRef.get()
Activity a = (Activity) getContext();
Siempre que pase la actividad actual como contexto en el constructor, como ya lo está haciendo.
Acabo de establecer una variable en mi actividad principal como así … public static Activity activity = this;
Entonces puedo referenciarlo desde cualquier lugar usando: MainActivity.activity
.
También puede configurarlo en el método onCreate (), simplemente configure la variable en la parte superior de su clase de actividad principal como esta public static Activity activity;
Entonces en el método onCreate () simplemente agregue activity = this;
en cualquier sitio.
Esto funcionará para cualquier clase que extienda Actividad, por ejemplo, public class MainActivity extends Activity
sin embargo, puede llamar a la variable de cualquier clase incluso si no se extiende Actividad.
Espero que esto ayude.
- Cómo aumentar el límite de tiempo de registro de pantalla ADB de Android Kitkat
- ¿Cómo obtener la identificación única del usuario de One Signal en Mobile?