在我的Android应用程序中,我正在使用Volley加载json数据JsonArrayRequest.数据是由我自己创建的,我用Sublime用UTF-8编码保存它们.当我得到Response并填充我的时ListView,文本显示不正确(变音符号).这是我的请求的样子:
JsonArrayRequest request = new JsonArrayRequest(targetUrl,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(final JSONArray response) {
try {
fillList(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(request);
Run Code Online (Sandbox Code Playgroud)
当我使用此方法加载完全相同的数据时,所有文本都正确显示:
final StringBuilder builder = new StringBuilder();
final HttpClient client = new DefaultHttpClient();
final HttpGet httpGet = new HttpGet(request);
try {
final HttpResponse response = client.execute(httpGet);
final StatusLine statusLine = response.getStatusLine();
int statusCode = …Run Code Online (Sandbox Code Playgroud) 我真的很难YouTubePlayerFragment在我的应用程序中使用 。我的实现是这样的:
private void loadYouTubeVideo(final YouTubeViewHolder h, final Content content) {
final YouTubePlayerFragment youTubePlayerFragment = YouTubePlayerFragment.newInstance();
FragmentTransaction transaction = ((DetailActivity) getContext()).getFragmentManager().beginTransaction();
transaction.add(R.id.fl_youtube, youTubePlayerFragment).commit();
final ViewTreeObserver observer = h.mRlYouTube.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
youTubePlayerFragment.initialize(YOUTUBE_PLAYER_API_KEY, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
if(!wasRestored) {
youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
youTubePlayer.loadVideo(content.getVideoId());
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.e(getClass().getSimpleName(), "Error initializing YouTube Video with id ");
FragmentTransaction transaction = ((DetailActivity) getContext()).getFragmentManager().beginTransaction();
transaction.remove(youTubePlayerFragment); …Run Code Online (Sandbox Code Playgroud) 我正在开发的应用程序有一个非常定制的构建过程。无法使用 gradle 构建我的应用程序。这并不理想,但我无法改变任何事情。尽管如此,我想在我的应用程序中使用 Firebase Analytics。其中包括模块 firebase-core、firebase-common、firebase-analytics、firebase-analytics-impl、firebase-iid、firebase-iid-interop、firebase-measurement-connector、firebase-measurement-connector-imple、play-services-测量基础和播放服务测量 API。我还在我的 中添加了以下字符串,其中包含我在Firebase 项目strings.xml中找到的值:google-services.json
<string name="google_app_id" translatable="false">xxx</string>
<string name="gcm_defaultSenderId" translatable="false">xxx</string>
<string name="default_web_client_id" translatable="false">xxx</string>
<string name="firebase_database_url" translatable="false">xxx</string>
<string name="google_api_key" translatable="false">xxx</string>
<string name="google_crash_reporting_api_key" translatable="false">xxx</string>
<string name="project_id" translatable="false">xxx</string>
Run Code Online (Sandbox Code Playgroud)
(如此处所述)并FirebaseInitProvider从 AndroidManifest.xml 中删除了 。在我的应用程序Application课上onCreate(),我这样做:
FirebaseOptions.Builder builder = new FirebaseOptions.Builder()
.setApplicationId(getString(R.string.google_app_id))
.setApiKey(getString(R.string.google_api_key));
FirebaseApp.initializeApp(this, builder.build(), "[DEFAULT]");
Run Code Online (Sandbox Code Playgroud)
到目前为止没有问题。执行上述代码时,我收到一条调试日志消息:
FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
Run Code Online (Sandbox Code Playgroud)
一切都好,我没有包含 auth 模块。我的应用程序不需要它。当我调用FirebaseAnalytics.getInstance(adblockSettingsTextView.getContext()).getFirebaseInstanceId()它时,它返回一个字符串值,所以我假设初始化成功。
现在每次我想记录这样的事件
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Dashboard");
FirebaseAnalytics.getInstance(this).logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
Run Code Online (Sandbox Code Playgroud)
我在日志中看到一条错误,Missing …
我想isLowRamDevice为我的应用程序使用帮助方法,它可以流式传输视频.当我支持设备关闭API级别15时,我不得不使用ActivityManagerCompat.isLowRamDevice().我真的很困惑,它总是返回假,即使我使用非常旧的设备.然后我检查了方法本身并看到了这个:
public static boolean isLowRamDevice(@NonNull ActivityManager am) {
if (Build.VERSION.SDK_INT >= 19) {
return ActivityManagerCompatKitKat.isLowRamDevice(am);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
所以难怪它总是在我的Android 4.0.4设备上返回false.但对我来说,这绝对没有意义.或者我错过了什么?
我想用一种ListView里面的东西ScrollView.该列表具有可变长度,始终可以添加/删除项目.是否有一种简单的方法来修改默认值Android ListView,我是否必须创建自定义ListView?