首先需要再Manifist.xml文件中配置一个android:name给取了名称以后获取上下文可以生效
android:theme="@style/AppTheme" android:name="BaseApplication"
Manifist.xml代码如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ldw.marketm">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" android:name="BaseApplication">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".PersonActivity"></activity>
<activity android:name=".DetailActivity"></activity>
<activity android:name=".FindDetailActivity"></activity>
<activity android:name=".RecomendDetailAppActivity"></activity>
</application>
</manifest>
BaseApplication.java获取到上下文对象
package com.ldw.marketm;
import android.app.Application;
import android.content.Context;
import android.os.Handler;
/**
* Created by ldw on 2018/5/10.
* 代表当前应用程序,获取上下文,需要在清单文件中配置
*/
public class BaseApplication extends Application{
private static BaseApplication application;
private static int mainTid;
private static Handler handler;
@Override
public void onCreate(){
super.onCreate();
application = this;
mainTid = android.os.Process.myTid();
handler=new Handler();
}
public static Context getApplication(){
return application;
}
public static int getMainTid() {
return mainTid;
}
public static Handler getHandler() {
return handler;
}
}
创建一个工具类UiUtils.java作为中介来获取到上下文
package com.ldw.marketm.Utils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import com.ldw.marketm.BaseApplication;
/**
* Created by ldw on 2018/5/10.
*/
public class UiUtils {
//获取到上下文
protected static Resources getResource(){
return BaseApplication.getApplication().getResources();
}
public static String[] getStringArray(int tabNames){
return getResource().getStringArray(tabNames);
}
public static Context getContext(){
return BaseApplication.getApplication();
}
//把Runnable 方法提交到主线程运行
public static void runOnUiThread(Runnable runnable){
// 在主线程运行
if(android.os.Process.myTid()== BaseApplication.getMainTid()){
runnable.run();
}else{
//获取主线程的handler
BaseApplication.getHandler().post(runnable);
}
}
public static Drawable getDrawalbe(int id) {
return getResource().getDrawable(id);
}
//延迟time时间执行task
public static void postDelayed(Runnable run, int time) {
// 获取到主线程的handler
BaseApplication.getHandler().postDelayed(run, time);//调用runnable中的run方法
}
//取消一个任务
public static void cancel(Runnable run) {
// 获取到主线程的handler
BaseApplication.getHandler().removeCallbacks(run);
}
/** dip转换px */
public static int dip2px(int dip) {
final float scale = getResource().getDisplayMetrics().density;
return (int) (dip * scale + 0.5f);
}
/** pxz转换dip */
public static int px2dip(int px) {
final float scale = getResource().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}
//获取到res/values/demons.xml的配置参数
public static int getDimens(int homePictureHeight) {
return (int) getResource().getDimension(homePictureHeight);
}
}