该问题发生在比 Oreo 更早的 Android 以及 Oreo 和更新版本上。
即使完成了以下步骤,我也无法让地理围栏工作:
我用下面的代码,如果检查GPS_PROVIDER和NETWORK_PROVIDER启用:
@Override
protected void onResume() {
super.onResume();
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Log.e("Provider", "Provider is not avaible");
} else if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Log.v("Provider", "GPS Provider is avaible");
}
if (!manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
Log.e("Network Provider", "Provider is not avaible");
} else if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
Log.v("Network Provider", "provider is avaible");
}
}
Run Code Online (Sandbox Code Playgroud)
以上两个都给了我积极的结果,所以问题不可能在这里。
确切的错误:
电子/地理围栏:com.google.android.gms.common.api.ApiException:1000:
我mGeofencingClient在开头设置 onCreate: …
我有一个简单的应用程序——Button它从 rest api 中获取数据以及TextView显示此数据的位置。我正在使用MVVM架构模式。当ViewModel收到带有获取数据的回调时,我将其设置为 ObservableField。不幸的是它不会更新屏幕上的文本,但是每当我旋转设备数据时都会在屏幕上更新。
好了,废话不多说,我给你看代码:
视图模型
public class MyViewModel extends ViewModel{
private ObservableField<String> name = new ObservableField<>();
@Override
public void onListReceived(String username) {
super.onListReceived(list);
name.set(username);
}
public String getName() {
return name.get();
}}
Run Code Online (Sandbox Code Playgroud)
并在 XML 中:
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.name}"
tools:text="some text"/>
Run Code Online (Sandbox Code Playgroud)
据我所知,我认为android:text="@{viewModel.name}"在 ' @' 和 ' {'之间的这一行中它应该是 '=' ,但是当我添加它时,清理项目并重建它,我得到了一个无法解决的错误DataBindingComponent。
有任何想法吗?
提前致谢!
我正在使用自定义视图,我想使用path.lineTo()和path.arcTo()方法构建一个圆角矩形。
所以,我想要得到的矩形:
通常我用这段代码来绘制它:
RectF backReftf = new RectF();
Path path = new Path();
int width = getWidth();
int height = getHeight();
float curve = (float) (0.1 * height);
RectF backReftf = new RectF();
backReftf.left = 0;
backReftf.top = 0;
backReftf.right = width;
backReftf.bottom = height;
path.addRoundRect(backReftf, curve, curve, Path.Direction.CW);
canvas.drawPath(path, paint);
Run Code Online (Sandbox Code Playgroud)
但我想用path.lineTo()和来画这个path.arcTo()。
根据文件arcTo():
将指定的圆弧作为新轮廓附加到路径。如果路径的起点与路径当前的最后一个点不同,则会添加自动 lineTo() 以将当前轮廓连接到圆弧的起点。但是,如果路径为空,则我们使用弧的第一个点调用 moveTo()。
所以理论上我的弧应该从那里开始,也就是线条结束的地方,所以如果我画一条线(矩形的左侧):
float curve = (float) (0.1 * height);
path.moveTo(0,0);
path.lineTo(0, height - curve); …Run Code Online (Sandbox Code Playgroud) 我从这里开始学习从Google指南实施MVVM:https:
//codelabs.developers.google.com/codelabs/android-room-with-a-view/#8 (特别是对我感兴趣的页面发布链接) .
由于我理解在Java中实现它,我决定切换到Kotlin.在类扩展中初始化构造函数时,AndroidViewModel我需要调用super它,它会抛出以下错误:
"super"不是表达,它只能用在点的左侧('.')"
当我用Google搜索并发现类似的主题但我根本不理解它,所以我没有解决我的问题.这是我的ViewModel课程代码:
class NotesViewModel private constructor(application: Application) : AndroidViewModel(application){
var mRepository: NotesRepository? = null
var mAllNotes: LiveData<List<Notes>>? = null
init {
super(application) // <-- here it throws me an error
mRepository = NotesRepository(application)
mAllNotes = mRepository!!.getAllWords()
}
fun getAllNotes(): LiveData<List<Notes>>{
return mAllNotes!!
}
fun insert(notes: Notes){
mRepository!!.insert(notes)
}
}
Run Code Online (Sandbox Code Playgroud)
那么,我该如何正确调用super,构造一个构造函数呢?这是这个类的正确java代码:
public class WordViewModel extends AndroidViewModel {
private WordRepository mRepository;
private LiveData<List<Word>> mAllWords;
public WordViewModel(Application application) …Run Code Online (Sandbox Code Playgroud)