所以,我注意到有趣的问题.当我以编程方式添加新片段时,OnBackStackChangedListener中的onBackStackChanged方法被调用两次,但它必须只调用一次.这是我的活动代码:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements FragmentManager.OnBackStackChangedListener{
private FragmentManager fragmentManager;
private Button button1;
private Button button2;
private Button button3;
private Fragment defaultFragment;
private Fragment previousFragment;
private Fragment currentFragment;
private String currentFragmentTag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showFragment(new FragmentOne(), FragmentOne.TAG);
}
}); …Run Code Online (Sandbox Code Playgroud) 我为客户创建了一个Android库,它存储在私有存储库中(可以是 Github 或 Bitbucket,没关系)。现在这个库应该发布到mavenCentral以供其他程序员将来使用。还有两个重要的要求:
我怎样才能做到这一点?我找到了很多 mavenCentral 的教程,但它们都只针对公共仓库。
我想在我的应用中使用chrome自定义标签.我发现如何将数据从url加载到选项卡中,但我没有找到,如何使用html-tags从字符串值加载数据.如何从webview示例中进行类比功能:
webViewContent.loadDataWithBaseURL(null, htmlText, "text/html", "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)
在chrome自定义标签中?
我需要使用具有图像改造2.0和一些键值参数发送multipart请求:"key1" - "parameter1","key2" - "parameter2"等,但也有使用相同的密钥参数: "somepar[]" - "text1","somepar[]" - "text2"...我不能使用@PartMap这个结构:
@Multipart
@POST(myUrlPart)
Call<ClassEntity> myRequest(@Header("Authorization") String authHeader,
@Part("image\"; filename=\"image.png\"") RequestBody image,
@PartMap Map<String, RequestBody> params);
Run Code Online (Sandbox Code Playgroud)
因为Map <>无法使用相同的键存储多个值.而我无法使用
@Part("somepar[]") List<String> mylist
Run Code Online (Sandbox Code Playgroud)
要么
@Part("somepar[]") String[] myArray
Run Code Online (Sandbox Code Playgroud)
因为它会发送键值"somepar[]" - "{"1","2","3"}",不"somepar[]" = "1" , "somepar[]" = "2" ,"somepar[]" = "3".
请帮忙,如何提出这样的要求.
我使用了diskCacheStrategyAppGlideModule库,库4.1.1的版本.这是我的滑行模块类:
@GlideModule
public class GlideUtil extends AppGlideModule {
private final int IMAGE_CACHE_SIZE = 20 * 1024 * 1024; // 20 MB
private final String IMAGE_FOLDER = "/User/Images";
@Override
public void applyOptions(Context context, GlideBuilder builder) {
RequestOptions requestOptions = new RequestOptions();
requestOptions.format(DecodeFormat.PREFER_ARGB_8888);
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
builder.setDefaultRequestOptions(requestOptions);
InternalCacheDiskCacheFactory factory = new InternalCacheDiskCacheFactory(context, IMAGE_FOLDER, IMAGE_CACHE_SIZE);
builder.setDiskCache(factory);
}
@Override
public boolean isManifestParsingEnabled() {
return false;
}
Run Code Online (Sandbox Code Playgroud)
此代码成功运行.但是当我将滑动库的版本更新到4.3.1时
compile 'com.github.bumptech.glide:glide:4.3.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
Run Code Online (Sandbox Code Playgroud)
在GlideUtil类中,我看到了消息:"未使用格式的结果","未使用diskCacheStrategy的结果":
那么,如何解决这个问题呢?那些方法format和diskCacheStrategy工作是否适用于format4.3.1?
我使用按钮android.support.v7.app.MediaRouteButton在我的应用程序中使用视频播放器在活动 xml 和片段 xml 中启动 chromecast 。
为了初始化投射按钮,我使用下一个代码:
private void setupChromeCast() {
try {
CastButtonFactory.setUpMediaRouteButton(getActivity(), castButton);
castContext = CastContext.getSharedInstance(getActivity());
castSession = castContext.getSessionManager().getCurrentCastSession();
onCastStateChanged(castContext.getCastState());
castSessionManager = new CastSessionManager(this);
isChromeCastAvailable = true;
} catch (Exception e) {
isChromeCastAvailable = false;
}
}
Run Code Online (Sandbox Code Playgroud)
它在活动中运行良好。我的意思是,当 chromecast 设备靠近时,我的 MediaRouteButton 变为活动状态,我可以按下它。但是当这个 Button 在 Fragment 上时,它不会变为活动状态。和回调
@Override
public void onCastStateChanged(int state)
Run Code Online (Sandbox Code Playgroud)
不叫。那么,如何修复这个bug呢?还有一个有趣的时刻:当我在片段中时,按钮不处于活动状态,但是当我将我的应用程序隐藏到后台,然后打开到前台时,我的 mediaroutebutton 变为活动状态。它太奇怪了。
我想在 webView 中显示一些 html 内容。这是我的代码:
String htmlContent = "..."; // some content here
webViewContent.getSettings().setJavaScriptEnabled(true);
webViewContent.setWebViewClient(new WebViewClient());
webViewContent.setHorizontalScrollBarEnabled(false);
webViewContent.setHorizontalScrollBarEnabled(false);
webViewContent.getSettings().setSupportMultipleWindows(false);
webViewContent.getSettings().setAllowFileAccess(true);
webViewContent.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webViewContent.setWebChromeClient(new WebChromeClient());
webViewContent.setBackgroundColor(ContextCompat.getColor(context, R.color.background_final_page));
webViewContent.loadDataWithBaseURL(null, htmlContent , "text/html", "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)
它可以很好地显示文本和图像,但是当我在 htmlContent 中有 iframe 时,例如
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="https://www.facebook.com/plugins/post.php?href=link" width="100%"></iframe>
Run Code Online (Sandbox Code Playgroud)
webView 显示 iframe 不正确,高度被裁剪。当我将 height="100%" 添加到 iframe 代码时,它没有结果。当我设置 height=600 或 height=400 时,它可以工作,但我无法提前知道 iframe 的高度大小。那么,我该如何修复它呢?
我需要在没有自己的服务器的Android应用程序中进行简单的聊天(我的意思是用户 - 用户架构).我可以使用telegram bot api吗?
如果没有,是否有任何免费聊天服务在Android应用程序中进行简单的聊天?
android ×8
java ×2
webview ×2
android-view ×1
chat ×1
chromecast ×1
html ×1
iframe ×1
retrofit ×1
telegram ×1
telegram-bot ×1