如何使用Mockito来模拟Context?
我正在使用上下文来访问Wifimanager和BluetoothManager等系统级服务.如何使用Mockito模拟此getApplicationContext()? 解决方案 让我们看一下以下课程:如果您需要更多洞察力,请检查官方测试基础页面 P> 其他解决方案 Context context = mock(Context.class); 其他解决方案 如果要使用Kotlin和Mockito获得上下文,则可以以以下方式进行: mock(Context::class.java)
2 2024-02-19
编程技术问答社区
一个家庭小部件可以有一个上下文吗?
在活动中,(通常)很容易获得上下文. 如果我正在与家庭小部件课程合作怎么办? 这些类别扩展了AppWidgetProvider,不包含上下文! 解决方案 上下文实例将传递给 appwidgetProvider "> 让您使用. 其他解决方案 对于那些无法访问 Android在onReceive widget类中提供上下文. @Override public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); }
4 2024-02-19
编程技术问答社区
无法从一个异步任务中启动一个WebView
我想从我的AsyncTask启动WebView,但似乎没有运行.这就是我的onPostExecute方法的样子: public class Viewer extends AsyncTask { private Activity objContext = null; public Viewer(Activity objContext) { this.objContext = objContext; } protected void onPostExecute(URI uriWebpage) { WebView wbvBrowser = new WebView(this.objContext); wbvBrowser.getSettings().setBuiltInZoomControls(true); wbvBro
0 2024-02-19
编程技术问答社区
setUserVisibleHint中的Null Context
当ViewPager中的片段可见时,需要向用户显示一条消息.目前的电话是: // Within a class that extends Fragment @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { MessageUtility.displayMessage(getContext()); } } MessageUtility.displayMessage()打开带有消息的警报对话框. Context显示消息.但是,不能保证片段被时间setUserVisibleHint()附加.因此,即使isVisiableToUser == true. 检查isVisibleToUser && isAttached()在理论
0 2024-02-19
编程技术问答社区
从ViewModel访问strings.xml
我正在使用Dagger 2 DataBindng和具有ViewModels的新的Android生命周期组件. 在我的ViewModel内部如何访问我的strings.xml?我一开始就在想,将Context注入viewModel,但是,这只会泄漏内存. 还有其他方法吗? 解决方案 有一个来自文档: 应用程序上下文意识 ViewModel . 子类必须具有接受应用程序作为唯一参数的构造函数. 您可以使用该参数从strings.xml中检索字符串. 链接中的存储库,但是使用 ViewModel 而不是AndroidViewModel.如果我将ViewModel扩展到使用 AndroidViewModel 并包括 Application - 它试图注入 myApplication 而不是 Application 如果这是有道理的. 我已经检查了 githubbrowsersermpample .这是UserViewModel的样子:
安卓:getApplicationContext()在视图子类中不起作用
所以我制作了一个类吸引图,它扩展了视图,我想在该类中绘制一些图形,并用我存储为int array的点 我在如何声明全球变量 因此,当我想在活动中与MyApp 连接并更改数组时,我只需使用 MyApp appState = ((MyApp)getApplicationContext()); 但是问题在于,当我在 drawview.java.java 类中称呼它时,这将不起作用. 有什么事如何解决这个问题? 解决方案 我真的不知道为什么这个答案是如此投票,因为这不是一个好的解决方案. 应用程序对象是运行应用程序,而不是存储数据,您可以使用简单的Singleton对象更轻松地解决此问题,请尝试以下操作: public Class MyData{ private int[] data; private static MyData me; public int[] getData(){ ret
2 2024-02-19
编程技术问答社区
安卓Holo灯的造型根据选择的环境而改变
我一直在试图在整个应用程序中找到我Views的奇怪格式格式不一致的原因,我想我已经用这个示例缩小了它. 我设置了两个等效的各种Views s的相同布局,并且 改变了创建中提供的Context.在第一组中,每个View是通过应用程序的上下文创建的Activity.getApplicationContext(),而在第二组中,View s是通过this this. 结果大不相同: 关于为什么使用应用程序上下文会导致垃圾(颜色不一致 - 白色和灰色)的任何建议? 在屏幕截图中看到 活动代码: import android.os.Bundle; import android.app.Activity; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; imp
0 2024-02-19
编程技术问答社区
为什么ContextThemeWrapper现在被限制在支持库组?
我开始使用ContextThemeWrapper动态地应用ImageButton>;基于答案对我的另一个问题,并回答了其他相似 问题. ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes); mImageButton = new AppCompatImageButton(wrapper, null, 0); 但是最近开始出现ContextThemeWrapper构造函数上的棉布错误: ContextThemeWrapper只能从同一库中调用 group(groupId = com.android.support) 我注意到以@RestrictTo(LIBRARY_GROUP)注释标记的类,这导致棉布错误出现.但是我找不到有关为什么的任何信息,它仅限于com.android.support库组. 据我所知,这是将样式,主题或主题覆盖层应用于View的唯一方法;除了
背景服务上的Android getContext
我正在尝试创建一个即使关闭应用程序也可以运行的服务.但是,我需要在此 service 中使用我的应用上下文.当应用程序运行时,服务也可以正常工作,但是当我关闭应用程序(ondestroy())时,getContext()始终返回null. 服务 public class SubscribeService extends Service { private Context context; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); context = this; //Returns null when service is running on background con
0 2024-02-18
编程技术问答社区
Android从服务类中调用IntentService类
我们可以从运行服务类调用IntentService类. Intent myintentservice = new Intent(this, MyIntentService.class); startService(myintentservice); 我在服务类中使用上述代码线来启动IntentService类.但是后来我得到以下错误: - Process: objectdistance.ankeshkjaisansaria.ram.sita.cameratag, PID: 21823 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference at android.content.ComponentName.
getApplication() vs. getApplicationContext()
我找不到令人满意的答案,所以我们去了:Activity/Service.getApplication()和Context.getApplicationContext()>? 有什么关系 在我们的应用程序中,都返回相同的对象.但是,在ActivityTestCase中,模拟应用程序将使getApplication()返回模拟,但是getApplicationContext仍然会返回其他上下文实例(一个由Android注射).那是一个错误吗?是故意的吗? 我什至不了解差异.在测试套件外是否有情况下两个呼叫都可能带有不同的对象?什么时候以及为什么?此外,为什么getApplication在Activity和Service上定义,而不是Context上的?不应该总是有一个有效的应用程序实例 whice ? 解决方案 非常有趣的问题.我认为这主要是语义含义,也可能是由于历史原因. 尽管在当前的Android活动和服务实现中,getApplication()和getAppli
0 2024-02-17
编程技术问答社区
createConfigurationContext在API级别上不工作 <26以编程方式改变语言
我已经阅读了有关在运行时更改应用程序内语言的所有内容.当前的所有功能都适用于API 26+27+28+29(是的,我已经测试过所有这些),并开始在API 25及以下闯入. 但是,这确实给了我零线索. 这是我的代码: public class BaseApp extends MultiDexApplication { //for MinSDK
0 2024-02-17
编程技术问答社区
这是从片段中获取字符串资源的正确方法吗?
在片段中,哪种方法通常更好/更安全? 在这里我直接阅读getResources().getString(): public class SomeFragment extends Fragment { public static SomeFragment newInstance() { Bundle args = new Bundle(); SomeFragment fragment = new SomeFragment(); fragment.setArguments(args); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); String so
0 2024-02-17
编程技术问答社区
在android.content.ContextWrapper的NullPointerException
当我尝试通过getResources().getColor(R.color.yellow)获得颜色时,我会得到以下例外: 07-12 11:58:38.019: E/AndroidRuntime(3233): FATAL EXCEPTION: main 07-12 11:58:38.019: E/AndroidRuntime(3233): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.moveinblue.planner/com.moveinblue.planner.controller.plan.PlanDayScreen}: java.lang.NullPointerException 07-12 11:58:38.019: E/AndroidRuntime(3233): at android.app.ActivityThread.performLaunchAct
0 2024-02-17
编程技术问答社区
在没有背景的情况下访问资源
我正在尝试将配置(例如urls/etc)放入资源文件夹中,以供实用程序类使用.但是,我不想从各地的活动中传递上下文.我希望能够通过路径名访问资源(似乎是为此用途而设计的),而无需使用上下文访问资源. 在这种特殊情况下,我希望单身人士实例化时使用配置中的某些东西.除了在实例化期间一次,它不需要任何资源.因此,每次getInstance()都必须在上下文中传递将是一个完全浪费. 另外,这是针对应用程序配置的,不应存储在共享系统文件或类似的内容中. 解决方案 使用 Resources.getSystem().getString(android.R.string.someuniversalstuff) 即使在静态常数声明中,您也可以在应用程序中绝对使用它!但是 仅用于系统资源 . 用于本地资源该解决方案. 其他解决方案 您可以扩展主应用程序类,并为那里提供通用的帮助者以访问资源.由于应用程序将提供上下文而不是呼叫者,因此这减轻了上下文的需求.应用程序类
0 2024-02-17
编程技术问答社区
在上下文或活动之外的getString
我发现R.string非常出色,可以将硬编码的字符串排除在我的代码之外,并且我想继续在与应用程序中的模型一起使用以生成输出的实用程序类中.例如,在这种情况下,我正在从活动之外的模型中生成一封电子邮件. 是否可以在A Context或Activity 之外使用getString?我想我可以通过当前活动,但这似乎是不必要的.如果我错了,请纠正我! 编辑:我们可以使用Context? 访问资源 是的 您可以使用: Resources.getSystem().getString(android.R.string.somecommonstuff) ...即使在静态常数声明中,您的应用程序中的任何地方也是如此. 不幸的是,它仅支持系统资源. 对于本地资源,请使用此解决方案.这不是微不足道的,但可以起作用. 其他解决方案 不幸的是,您可以使用Context访问任何字符串资源的唯一方法(即Activity或Service).在这种情况下,我通常要做的就是仅要求呼叫
0 2024-02-17
编程技术问答社区
Android:我应该在recyclerview里面维护一个对活动的引用,还是有其他方法?
我需要在OnBindViewHolder中使用上下文方法(标准示例可能与GetString或GetColor一样常见).到目前为止,我已经将上下文传递给了回收科的构造函数,并在变量中保留了一个参考,但是在我看来,这是不好的做法.有没有一种方法可以在不存储变量的情况下从循环系统内部动态获取上下文? public SomeRecyclerViewClass(Activity activity) { this.parentActivity = activity; } 解决方案 我看不到将Context传递给构造函数并将其存储在字段中的任何缺点.无论如何,您可以以这种方式访问​​它: public class MyAdapter extends RecyclerView.Adapter { @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, i
0 2024-02-17
编程技术问答社区
Kotlin Android Fragment recyclerView和上下文问题
我想在片段中创建一个recyclerview,但它显示了一个错误" 在com.gph.bottomnavigation.fragmentme.oncreateview(fragmentMe.kt:28)" 问题1)请帮助解决此问题. 问题2)我仅在一个没有任何片段的空项目中创建了一个循环系统,它正常工作. 但是相同的代码在片段中没有工作,它显示错误,因此我更改" recylerview_main.layoutmanager = linearlayOutManager(this)"为" recylerview_main.main.layoutmanager = linearlayOutManager(contextManager(context)" 它没有显示错误,我可以在simLulator中运行,但是当我单击片段的导航按钮时,应用程序停止并显示此错误.请帮助解决它. 在这里使用FragmentMe.kt的代码: class FragmentMe : Fragm
0 2024-02-17
编程技术问答社区
如何在回收器视图适配器中获得一个上下文
我正在尝试使用毕加索库来将URL加载到ImageView,但是我无法正确使用Picasso库. public class FeedAdapter extends RecyclerView.Adapter { private List mDataset; // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder public class ViewHolder extends RecyclerView.ViewHolder { // each da
0 2024-02-17
编程技术问答社区
用android.content.Context.checkPermission检查权限时出现空指针异常
在查询Android日历之前,我需要检查权限. 为此,Android Studio警告说,我需要在查询之前遵循检查. 自动生成的代码是此作品: if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) { System.out.println("NO ACCESS TO CALENDAR!! Abort mission, abort mission!!"); } 尝试运行它时,我会得到此错误: 尝试调用虚拟方法'int android.content.Context.Checkpermission(java.lang.string,int,int)' 在null对象引用 上 因此,很明显,此时某些内容是无效的,我试图以不同的方式获取应用程序的上下文,但仍然是相同的错误
2 2024-02-17
编程技术问答社区