在Android应用程序中,如果活动类名称已知,有没有办法在非活动类中获取android中的上下文?
有什么区别:
getApplicationContext()getBasecontext()getApplication()getParent()你能用一个简单的例子详细说明吗?
活动和上下文是一样的,还是存在差异?
我什么时候应该有一个方法传递一个Activity,当一个Context?
我基本上想要创建一个intent并将它传递给我的BroadcastReceiver的onReceive()服务.
到目前为止,我总是使用View.getContext(),但在这里,我被卡住了.我怎样才能获得上下文以便我可以使用public Intent (Context packageContext, Class<?> cls)?
service android broadcastreceiver android-intent android-context
我试图在我的AsyncTask中获取名为Opciones的类的上下文(这个类是唯一一个调用该任务的类),但我不知道该怎么做,我看到了一些像这样的代码:
protected void onPostExecute(Long result) {
Toast.makeText(Opciones.this,"Subiendo la foto. ¡Tras ser moderada empezara a ser votada!: ", Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用它说: "No enclosing instance of the type Opciones in scope"
如果我有参考Context,是否可以完成当前的活动?
我没有参考当前的活动.
我真的不明白这整个事情是如何工作的,所以如果我有一些类A需要B扩展的类的上下文,Activity我该如何获得该上下文?
我正在寻找一种比将上下文作为类A构造函数的参数更有效的方法.例如,如果类A将有数百万个实例,那么我们最终会有数百万个冗余指针,Context而我们应该能够以某种方式只有一个地方和一个getter函数......
从 API 级别 33 开始,getPackageInfo(String, int)PackageManager 类的方法已被弃用。文档建议改为使用getPackageInfo(String, PackageInfoFlags)。但该功能仅适用于 API 级别 33。
我当前的代码:
val pInfo = context.packageManager.getPackageInfo(context.packageName, 0)
Run Code Online (Sandbox Code Playgroud)
现在应该是这样吗?
val pInfo = context.getPackageInfo()
@Suppress("DEPRECATION")
fun Context.getPackageInfo(): PackageInfo {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(0))
} else {
packageManager.getPackageInfo(packageName, 0)
}
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有很多课程和活动.Droid是一个没有上下文的类.Mygame是一个扩展SurfaceView并实现SurfaceHolder.Callback的类.我在mygame类中创建了一个Droid对象,并为它设置了背景图像和位置.我为此编写的代码如下.
block1 = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.birdpic), 100, 10);
Run Code Online (Sandbox Code Playgroud)
Droid类的构造函数如下.
public Droid(Bitmap bitmap, int x, int y) {
this.bitmap = bitmap;
this.x = x;
this.y = y;
}
Run Code Online (Sandbox Code Playgroud)
在一个特定的场景中,我必须从Droid类本身设置Droid对象的背景图像和位置.我正面临着这个问题.下面给出的是执行此操作的代码片段.
if(checkflag)
{
myObj.centerblock=new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.blast), myObj.xpos, myObj.ypos);
}
Run Code Online (Sandbox Code Playgroud)
问题是Droid类没有上下文.所以我不能在这里使用getResources().我已经尝试了下面的代码,但它崩溃了.
if(checkflag)
{
myObj.centerblock=new Droid(BitmapFactory.decodeResource(myObj.getResources(), R.drawable.blast), myObj.xpos, myObj.ypos);
}
Run Code Online (Sandbox Code Playgroud)
有谁能够帮我.我只想设置背景图像并将其放置在Droid类本身的Droid对象中.
获取内容的上下文onClick(View view),按钮的回调onClickListener()很容易:
view.getContext()
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何获得上下文中onClick(DialogInterface v, int buttonId),对于回调对话框的onClickListener
public class MainActivity extends Activity implements android.content.DialogInterface.OnClickListener
Run Code Online (Sandbox Code Playgroud)
这可能吗?
android ×10
android-context ×10
background ×1
class ×1
dialog ×1
onclick ×1
package-info ×1
service ×1
toast ×1