虽然从移植代码python2到3,我从一个URL读取时出现此错误
TypeError:initial_value必须是str或None,而不是字节.
import urllib
import json
import gzip
from urllib.parse import urlencode
from urllib.request import Request
service_url = 'https://babelfy.io/v1/disambiguate'
text = 'BabelNet is both a multilingual encyclopedic dictionary and a semantic network'
lang = 'EN'
Key = 'KEY'
params = {
'text' : text,
'key' : Key,
'lang' :'EN'
}
url = service_url + '?' + urllib.urlencode(params)
request = Request(url)
request.add_header('Accept-encoding', 'gzip')
response = urllib.request.urlopen(request)
if response.info().get('Content-Encoding') == 'gzip':
buf = StringIO(response.read())
f = gzip.GzipFile(fileobj=buf)
data …Run Code Online (Sandbox Code Playgroud) 假设你android:onClick="doClick"在Activityas中定义
protected void doClick(View view) { }
Run Code Online (Sandbox Code Playgroud)
该文件指出,
此名称必须对应于只接受View类型的一个参数的公共方法.
这是底层Class.getMethod()方法的一个给定要求,它只能在文档声明它时找到公共方法
返回一个
Method对象,该对象反映此Class对象表示的类或接口的指定公共成员方法.
那么,这种实现根本不适用于某些设备和模拟器的可能性如何呢?虽然它对使用相同API级别的其他设备不起作用?
我正在尝试在任务完成时动画一些东西.这里的问题是我收到此错误消息:
android.util.AndroidRuntimeException: Animators may only be run on Looper threads
at android.animation.ValueAnimator.cancel(ValueAnimator.java:1004)
at android.view.ViewPropertyAnimator.animatePropertyBy(ViewPropertyAnimator.java:965)
at android.view.ViewPropertyAnimator.animateProperty(ViewPropertyAnimator.java:921)
at android.view.ViewPropertyAnimator.alpha(ViewPropertyAnimator.java:735)
at com.design.zaton.prototypei.MainActivity$1$1.run(MainActivity.java:93)
at java.lang.Thread.run(Thread.java:761)
Run Code Online (Sandbox Code Playgroud)
该应用程序使用相同的确切代码工作正常,但现在它根本没有.我真的很困惑.
这是错误发生的地方:
new Thread(new Runnable() {
@Override
public void run() {
final String s = getGiphyViews(String.valueOf(mEdit.getText()));
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(s);
}
});
loading.animate()
.alpha(0)
.setDuration(100);
done.animate()
.scaleY(1)
.scaleX(1)
.setDuration(300);
}
}).start();
Run Code Online (Sandbox Code Playgroud)
该错误概述了该loading.animate()方法.
提前致谢!
我正在尝试开发基于google place API的应用程序.当我尝试使用时
Place place=PlacePicker.getPlace(data,this);
Run Code Online (Sandbox Code Playgroud)
显示的错误getPlace()已弃用.请提出解决方案.提前致谢!
如果我们使用DiffUtil.Callback,并做
adapter.setItems(itemList);
diff.dispatchUpdatesTo(adapter);
Run Code Online (Sandbox Code Playgroud)
我们如何确保添加新元素将滚动到新的位置.
我有一个案例,我看到项目消失,并在顶部创建一个新的第一个元素,但不可见.它会隐藏在顶部,直到您向下滚动以使其可见.在使用之前DiffUtil,我是手动实现的,在我知道我插入某个位置(在顶部)后,我可以滚动到.
我正在使用CircledImageView库.它适用于棒棒糖+ Android版本.但在kitkat它崩溃了.所以在谷歌搜索后.我发现我必须在我的应用程序中实现multidex.
这是我的应用程序类.
public class FireApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Firebase.setAndroidContext(this);
Fresco.initialize (this);
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在defaultconfig下的build.gradle中,MultiDexEnabled为true
multiDexEnabled true
Run Code Online (Sandbox Code Playgroud)
但是当我运行应用程序时,我收到以下错误.
java.lang.NoSuchFieldException: Field dexElementsSuppressedExceptions not found in class dalvik.system.PathClassLoader
at android.support.multidex.MultiDex.findField(MultiDex.java:288)
at android.support.multidex.MultiDex.access$300(MultiDex.java:57)
at android.support.multidex.MultiDex$V19.install(MultiDex.java:390)
at android.support.multidex.MultiDex$V19.access$000(MultiDex.java:369)
at android.support.multidex.MultiDex.installSecondaryDexes(MultiDex.java:242)
at android.support.multidex.MultiDex.install(MultiDex.java:161)
at android.support.multidex.MultiDexApplication.attachBaseContext(MultiDexApplication.java:39)
at com.buckydroid.anonchat.FireApp.attachBaseContext(Unknown Source)
at android.app.Application.attach(Application.java:182)
at android.app.Instrumentation.newApplication(Instrumentation.java:991)
at android.app.Instrumentation.newApplication(Instrumentation.java:975)
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4564)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5268)
at java.lang.reflect.Method.invokeNative(Native …Run Code Online (Sandbox Code Playgroud) 考虑使用a BroadcastReceiver来实现简单目标的简单工具.因为这不应该被其他应用使用,它定义了与一个的ProtectionLevel许可signature或signatureOrSystem:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="any.test">
<permission
android:name="any.test.PERMISSION"
android:protectionLevel="signatureOrSystem" />
<application android:label="AnyTest">
<receiver
android:name=".Receiver"
android:exported="true"
android:permission="any.test.PERMISSION" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
现在我想通过发送广播来测试这个
adb shell am broadcast -n any.test/.Receiver
Run Code Online (Sandbox Code Playgroud)
从我的电脑.虽然这在模拟器上完全正常,但在设置此权限时,它在真实设备上根本不起作用.如果未设置权限,则一切都按预期工作.
那么如何定义或授予权限以便我可以在真实设备上测试所有这些ADB?
我想在调试模式下使这个导出的接收器更安全,所以如果有一个特殊的ADB使用权限或运行时测试只允许ADB我可以实现的调用Receiver.onReceive(Context, Intent),它也会有所帮助.接收器不必同时为ADB其他应用程序工作.
我一直在努力寻找在Android中实现MVVM的正确方法.
整个想法对我来说仍然模糊,模式是有一个单独的层,逻辑完成(ViewModel).
这段代码只能动画一堆片段所在的背景的alpha.
public class StartActivity extends AppCompatActivity implements EntryFragment.EntryFragementListener {
private static final float MINIMUM_ALPHA = 0.4f;
private static final float MAXIMUM_ALPHA = 0.7f;
@State
float mCurrentAlpha = MINIMUM_ALPHA;
@State
String mCurrentTag = EntryFragment.TAG;
private ActivityStartBinding mBinding;
private StartViewModel mStartViewModel = new StartViewModel();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_start);
mBinding.setStartViewModel(mStartViewModel);
mBinding.bgBlackLayer.setAlpha(mCurrentAlpha);
if (getSupportFragmentManager().findFragmentByTag(mCurrentTag) == null) {
switch (mCurrentTag) {
case EntryFragment.TAG:
setEntryFragment();
break;
case FreeTrialFragment.TAG:
setFreeTrialFragment();
break;
}
}
}
private void setEntryFragment() { …Run Code Online (Sandbox Code Playgroud) 我正在尝试将中型应用程序迁移到新的Android navigation组件。
目前,我的应用程序由组成,single activity并且我打算将其保持不变(就此而言);因此,我面临的问题是我有一个设置片段(PreferenceFragment),基本上可以从其他所有片段中导航到该片段。该导航是通过应用栏中的菜单进行的,因此onOptionsItemSelected(包含此导航)位于主活动中。
我在确定将线连接settingsFragment到其他线的正确方法时遇到了麻烦。对我来说,将它连接到所有其他对象似乎是意大利面条。
应该settingsFragment连接到所有其他片段吗?
由于Google没有给出足够的理由(或任何理由)来支持单一活动的应用程序体系结构,我应该放弃它吗?
我有一个EditText,lineSpacingExtra设置为8dp.当我用这个EditText和预设文本打开一个页面时,行间距很好.但是当我在同一页面上点击EditText的末尾并开始输入时,行间距似乎被忽略了.
这是一个错误还是我错过了什么?

添加了代码段.我想,没什么特别的.
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:padding="8dip"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:gravity="top"
android:lineSpacingExtra="8dip"
android:lineSpacingMultiplier="2"
android:textSize="18sp"
android:capitalize="sentences"
android:inputType="textCapSentences|textMultiLine"
/>
Run Code Online (Sandbox Code Playgroud)
更新:看起来Android 5 Lollipop 附带了这个bug
android ×9
java ×3
android-architecture-navigation ×1
line ×1
mvvm ×1
permissions ×1
python ×1
python-3.x ×1
reflection ×1
urllib ×1
urllib2 ×1