我有一个List<Thing>,我想将它传递给声明的方法doIt(final Thing... things).有没有办法做到这一点?
代码看起来事情是这样的:
public doIt(final Thing... things)
{
// things get done here
}
List<Thing> things = /* initialized with all my things */;
doIt(things);
Run Code Online (Sandbox Code Playgroud)
该代码显然不能因为工作doIt()需要Thing不能List<Thing>.
有没有办法传入List作为varargs?
这是在Android应用程序中,但我不明白为什么该解决方案不适用于任何Java
我最初问过这个问题,关于在安装时通过市场链接将参数传递到我的应用程序.
每个人似乎都在说BroadcastListener用这个intent-filter动作来创造一个com.android.vending.INSTALL_REFERRER.关于这一点的所有文档似乎暗示这是Google Analytics的功能(文档在v1中,但我现在只能下载v2 SDK ...这就是我正在使用的内容).我无法通过这些链接传递数据.我有我的完整清单和我的广播听众.我已将谷歌分析包括在内,以防万一.
它根本不起作用.我的广播监听器永远不会被调用,日志中不会打印出任何内容.救命!
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.robotsidekick.webbrowser"
android:versionCode="4"
android:versionName="4.0">
<uses-sdk android:minSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity
android:name="WebBrowser"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver
android:exported="true"
android:name="com.robotsidekick.webbrowser.InstallReceiver">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
广播听众
public class InstallReceiver extends BroadcastReceiver
{
private static final String TAG = "InstallReceiver";
public void onReceive(Context …Run Code Online (Sandbox Code Playgroud) 我有一个我在我的Android应用程序中覆盖的网址.单击从电子邮件到该链接的链接会弹出Intent Chooser对话框("使用完成此操作").但是,点击<a>Chrome中的相同链接(在标记中)(在Android 4上)会将我重定向到该网址,但不会提供该网址Intent Chooser.
如果我使用指向<a>Google Play商店(https://play.google.com)的链接替换代码中的链接,则再次点击该链接会弹出Intent Chooser.
Google Play商店和Chrome是否有特别之处,或者我在配置我的网址时做错了什么?我有什么办法可以用html来完成这项工作吗?
这是 <intent-filter>
<activity
android:label="@string/app_name"
android:name="..."
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="https"
android:host="www.example.com"
/>
<data android:scheme="http"
android:host="www.example.com"
/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
(重定向到网址也不会弹出Intent Chooser对话框,但我认为上面的情况更明确地表达了我的问题.)
另外值得注意的是,我相当肯定这一切都在我的域名失效时工作.一旦我的域名上线,这就停止了.这可能是我的想象力,因为我当时并不是100%专注于这个问题.
Chrome是否可能会特别对待Google Play商店的网址,否则它会在打开之前等待来自网址的非200响应Intent Chooser?
我很抱歉,如果这是一个非常无知的问题,但是大使是否有可能真正处理CORS标头和飞行前OPTION响应?
对于我来说,文档(https://www.getambassador.io/reference/cors)似乎有点模棱两可,只是有一些钩子可以阻止请求,或者它可以真正代表服务进行响应。
这是我的情况:在某些微服务的所有http请求之前,我都有大使。为了[理由],我们现在需要一个单独的域来向同一位大使发出请求。
我已经配置了AuthService,并且根据文档“当您使用外部授权时,每个传入的请求都会经过身份验证,然后再路由到其目的地,包括飞行前OPTIONS请求。” 这很有意义,这就是我所看到的。我的AuthService已配置为允许正确运行,并且似乎可以正常运行。AuthService使用适当的标头进行响应,但是大使似乎只是忽略了它,仅在乎AuthService是否以200进行响应。(这似乎是完全合理的。)
我在我的大使模块上对此进行了注释:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Module
name: ambassador
config:
service_port: 8080
cors:
origins: [my domain here]
credentials: true
Run Code Online (Sandbox Code Playgroud)
而且这似乎并没有达到我的期望,它可以处理CORS标头并进行预检...相反,它将其转发给服务以处理所有CORS内容。
我是Android新动画的新手,我似乎有一个简单的问题......我有一个启动/加载屏幕,我想在完成时淡出,然后显示应用程序.
我的布局看起来像这样(样式只是设置一个背景图像):
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/homeParentContainer"
style="@style/LayoutWithBgStyle"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/homeSplashLayout"
style="@style/LayoutWithSplashStyle"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
</LinearLayout>
<LinearLayout
android:id="@+id/homeMainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="vertical"
android:visibility="gone" >
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
然后我尝试了两种不同的方法来淡出启动画面并设置主屏幕:
final Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
final View splash = findViewById(R.id.homeMainLayout);
fadeOut.setAnimationListener(new AnimationAdapter()
{
@Override
public void onAnimationEnd(final Animation animation)
{
splash.setVisibility(View.GONE);
findViewById(R.id.homeMainLayout).setVisibility(View.VISIBLE);
}
/** And the other two methods */
});
splash.startAnimation(fadeOut);
Run Code Online (Sandbox Code Playgroud)
然后我尝试了自己的动画:
final AlphaAnimation fadeOut = new AlphaAnimation(1.0F, 0.0F);
fadeOut.setDuration(1000);
final View splash …Run Code Online (Sandbox Code Playgroud) 我有一个RelativeLayout(我没有结婚)和两个TextView.我希望第一个的底部TextView与它的父级的中心对齐,而第二个的顶部TextView与它的父级的中心对齐.

我在上图中在父母的(垂直)中心放了一条绿线.该TextViews为目前完全正确的位置,但是我这样做,我会用保证金的以下描述和他们对准父,知道父母的大小.
出于各种原因,我不能只使用一个TextView并将其置于中心位置.另外我不知道父母的高度,所以我不能将每个对齐到父母的顶部/底部,并将它们向下/向上边缘以使它们居中.
我也尝试过另一个View占据一半高度的东西invisible,但layout_height不会占用百分比(或者至少它给了我错误).
我有什么想法可以做到这一点?
我应该把两个TextViews放在另一个布局中并拥有该中心吗?
要求:
我的应用中有一个"分享"按钮.我有要求通过Facebook分享.我需要选择是否安装原生Facebook应用程序.如果未安装该应用,我们的决定是将用户发送到facebook.com进行分享.
现状:
我可以检测到何时未安装本机应用程序(通过包名称),并向选择器添加其他意图.
问题:
用户必须通过"Facebook的网站"选择分享的项目说"浏览器"并具有Android浏览器图标.LabeledIntent项目没有出现,我得到"没有找到Intent的活动{act = android.intent.action.VIEW dat = ...}
守则(简化......):
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, "check this out");
intent.putExtra(Intent.EXTRA_TEXT, urlToShare);
boolean facebookInstalled = false;
Intent chooser = Intent.createChooser(intent, "Share this link!");
if (!facebookInstalled)
{
Intent urlIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/sharer/sharer.php?u=" + Uri.encode(urlToShare)));
Intent niceUrlIntent = new LabeledIntent(urlIntent, context.getApplicationContext().getPackageName(), "Facebook's Website", R.drawable.icon);
// Ideally I would only add niceUrlIntent in the end, but that doesn't add anything to the chooser as-is
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[urlIntent, niceUrlIntent]);
}
context.startActivity(chooser);
Run Code Online (Sandbox Code Playgroud)
解决方案 …
我注意到,使用新的Google应用程序,他们正在更新小的Home/Up图标,不是箭头,而是三条小线(至少在Android 4.2上).

他们是如何实现这一目标的?我没有在ActionBar中看到它的API ...
我想要一个带有EditText字段的AlertDialog来接受输入.这本身就很简单.但是,有一些"显而易见"的功能,我想从这个请求中得到影响.我会一个接一个地拿它们.我正在寻找那些对这些事情有更简单解决方案的人.我猜测解决方案是,"编写自己的自定义对话框,你懒惰的屁股."
AlertDialog 与 EditText
final EditText input = new EditText(context);
final AlertDialog dlg = new AlertDialog.Builder(this).
setTitle("Title").
setView(input).
setCancelable(false).
setPositiveButton(android.R.string.ok, new OnClickListener()
{
@Override
public void onClick(final DialogInterface dialog, final int which)
{
/* Handle ok clicked */
dialog.dismiss();
}
}).
setNegativeButton(android.R.string.cancel, new OnClickListener()
{
@Override
public void onClick(final DialogInterface dialog, final int which)
{
/* Handle cancel clicked */
dialog.dismiss();
}
}).create();
dlg.show();
Run Code Online (Sandbox Code Playgroud)
是的,很棒.如果输入字段立即聚焦(并显示键盘),那肯定会很好,对吗?
AlertDialog聚焦EditText
以下代码将是create()之前和之后dlg.show()
/** This requires API Level 8 or greater. …Run Code Online (Sandbox Code Playgroud) 首先,我要说这只是Android 2及更早版本的问题(4似乎没有受到影响,我没有测试3).
我有一个WebView从字符串加载HTML.HTML看起来像这样:
<html>
<head>
<link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' />
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以看到css文件如下所示:
body {
font-family: "Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace;
}
h1 {
border-bottom: 3px solid #ccc;
}
Run Code Online (Sandbox Code Playgroud)
该WebView代码如下所示:
final WebView webview = new WebView(this);
setContentView(webview);
final String result = "<html><head><link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' /></head><body><h1>Hello World</h1></body></html>";
webview.loadData(result, "text/html", Encoding.UTF_8.toString());
Run Code Online (Sandbox Code Playgroud)
怎么了
我看到html代码,WebView好像我已经将mime类型设置为纯文本.

我期待什么(以及Android 4.x中会发生什么
我看到了html WebView
有一些事情必须是真实的,以显示我看到的症状:
href="http://www.robotsidekick.com/test.css?rev=0"而不是href="test.css"(但是如果它是真正的css文件 …android ×9
ambassador ×1
cors ×1
fadeout ×1
git ×1
github ×1
google-play ×1
ime ×1
intentfilter ×1
java ×1
kubernetes ×1
list ×1
url-scheme ×1
urlencode ×1