如果我清理并保存用户输入的一些元文本(称为"消息"),就像这样......
update_post_meta($post_id, 'message', sanitize_text_field($_POST['message']));
Run Code Online (Sandbox Code Playgroud)
...然后检索并尝试重新显示这样的文本......
echo '<textarea id="message" name="message">' . esc_textarea( get_post_meta( $post->ID, 'message', true ) ) . '</textarea>';
Run Code Online (Sandbox Code Playgroud)
......所有的换行都会丢失.
根据WordPress codex,sanitize_text_field()函数正在删除换行符.那么如何在不丢失换行符的情况下清理用户输入的文本呢?
我已经读过,一般来说,SecureRandom的一些实现可能会产生真正的随机数.
特别是,Android文档说
此类的实例将使用内部熵源生成初始种子,例如
/dev/urandom
但这是否意味着它会产生真正的随机数(即,而不是伪随机数)?
如果我SecureRandom以这种方式在Android中使用...
SecureRandom sr = new SecureRandom();
Run Code Online (Sandbox Code Playgroud)
...每当我打电话时,我会得到一个真正的随机输出sr.nextBoolean()吗?
或者,如果我每次都通过这样做获得输出,那么输出可能更多(或更少?)随机:
new SecureRandom().nextBoolean()?
这个问题是针对新的ViewPager2类的。
旧的 ViewPager有一个类似的问题,但解决方案需要扩展ViewPager。但是,ViewPager2 是最终版本,因此无法扩展。
在我的情况下,我有一个包含三个不同片段的 ViewPager2。其中一个片段比其他两个片段高得多,这意味着当您滑动到较短的片段之一时,会有很多空白空间。那么如何有效地将 ViewPager2 包裹到当前片段的高度呢?
android android-fragments android-viewpager android-viewpager2
我有运行OnItemSelectedListenerspinner事件的代码.所以,当我在方法中时:
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// I want to do something here if it's a user who changed the the selected item
}
Run Code Online (Sandbox Code Playgroud)
...我如何知道项目选择是通过编程方式完成还是通过用户操作通过UI完成?
我见过的Android SQLite事务的代码示例似乎在db.setTransactionSuccessful()之前自动调用db.endTransaction().
我想知道这是否是最佳做法,或者是否应该在打电话之前进行一些有条件的检查db.setTransactionSuccessful().
在我的情况下,我重写ContentProvider的bulkInsert()方法,如果我使用描述的条件检查,我的方法将看起来像这样......
@Override
public int bulkInsert(Uri uri, ContentValues[] valuesArray) {
// Open a read / write database to support the transaction.
SQLiteDatabase db = dbHelper.getWritableDatabase();
switch (uriMatcher.match(uri)) {
case BRANDS_SEARCH:
int numInserts = 0;
db.beginTransaction();
for (int i = 0; i < valuesArray.length; i++) {
// Insert the values into the table
long rowId = db.insert(BRAND_NAMES_TABLE, null, valuesArray[i]);
if (rowId > -1) {
// Increment numInserts
numInserts++;
// …Run Code Online (Sandbox Code Playgroud) 我们的webapp会向iOS和Android设备发送推送通知请求.
对于iOS,Apple推送通知服务具有反馈服务,因此您可以检测哪些设备已卸载您的应用程序,然后将其从数据库中删除.
Android GCM是否有类似的反馈服务?如果没有,如何检测哪些Android用户不再安装该应用?
service android feedback apple-push-notifications google-cloud-messaging
我创建了一个自定义键盘,它工作正常 - 除了前两行键的预览视图显示不够高.它们的垂直位置受到父布局的约束.
这些屏幕截图说明了问题 - "0"和"8"的预览位置是好的,但对于"5"和"2",它不是:
键'0'的预览显示在按钮上方...
键'8'的预览也显示在按钮上方...
但键'5'的预览未显示在按钮上方...
键'2'的预览未显示在按钮上方...
如何克服,因此"5"和"2"的预览显示在它们各自键上方相同的距离处,与"0"和"8"相同.
这是我的keyboard.xml ...
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:keyPreviewLayout="@layout/keyboard_key_preview" />
Run Code Online (Sandbox Code Playgroud)
这是我的keyboard_key_preview.xml ...
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@color/keyboard_preview_bg"
android:textColor="@color/keyboard_preview_fg"
android:textStyle="bold"
android:textSize="@dimen/keyboard_preview_text_size" />
Run Code Online (Sandbox Code Playgroud)
这是我的keyboard_numeric.xml布局......
<Keyboard
xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="33.33%p"
android:keyHeight="@dimen/keyboard_key_height"
android:horizontalGap="@dimen/keyboard_horizontal_gap"
android:verticalGap="@dimen/keyboard_vertical_gap">
<Row android:rowEdgeFlags="top">
<Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
<Key android:codes="50" android:keyLabel="2"/>
<Key android:codes="51" android:keyLabel="3" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="52" android:keyLabel="4" android:keyEdgeFlags="left"/>
<Key android:codes="53" android:keyLabel="5"/>
<Key android:codes="54" android:keyLabel="6" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="55" android:keyLabel="7" android:keyEdgeFlags="left"/>
<Key android:codes="56" android:keyLabel="8"/>
<Key …Run Code Online (Sandbox Code Playgroud) 我创建了一个测试活动来更新我的 MyViewModel 中的一些文本。
我想在Fragment 中观察这些变化,但是当我使用
MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
它给了我一个与活动中使用的不同的 MyViewModel 实例,这导致我onChanged()在片段中的回调不被调用。
只有当我将相同的片段代码修改为
HomeViewModel homeViewModel = new ViewModelProvider(getActivity()).get(HomeViewModel.class);
Run Code Online (Sandbox Code Playgroud)
片段是否获得与活动相同的 MyViewModel 实例 - 所以 onChanged()被成功调用。
但是,我不确定使用getActivity()作为 ViewModelStoreOwner 是否是正确的做事方式,因为我没有在任何地方的任何示例中看到过这种情况。我想知道在这种情况下是否应该使用更好的 ViewModelStoreOwner?
android android-fragments android-livedata android-viewmodel
我已经交了一些PSD,需要使用WordPress和WooCommerce创建一个电子商务网站.我找到了几个用于创建WordPress主题的资源... http://codex.wordpress.org/Theme_Development http://themeshaper.com/2009/06/22/wordpress-themes-templates-tutorial/
...但是因为我将要使用WooCommerce,我是否仍然需要遵循这些指南,或者WooCommerce开发阶段是否会使上述指南变得多余?
我已经研究了这个,但是如果你不熟悉WordPress和WooCommerce,我发现的资源并不清楚从哪里开始.
先感谢您.
我开发了一个使用基于cookie的会话的PHP Web应用程序,它一切正常 - 直到我意识到它将无法在禁用第三方cookie的浏览器中工作(因为脚本将在iframe上加载另一个网站/域名).
所以我决定切换到基于URL的会话(我认为这是安全的,因为脚本在iframe中,没有可见的URL供用户共享或书签等).
但是,出于某种原因,由于我切换到基于域的会话,我的Web应用程序中的每个页面都使用不同的会话ID.
这是我的代码......
ini_set("session.use_cookies", 0);
ini_set("session.use_only_cookies", 0);
ini_set("session.use_trans_sid", 1);
ini_set("session.cache_limiter", "");
session_start();
echo "<p>Session ID: " . session_id() . "</p>"; // Test output
Run Code Online (Sandbox Code Playgroud)
...这是在每个页面上调用的第一件事(没有我以前知道的输出).
我的Web应用程序的第一页包含一个表单,我看到PHP自动添加了所需的隐藏会话ID输入:
<input type="hidden" name="PHPSESSID" value="m4jbeec47uplnf95ue2h244a02" />
但是下一页(表单提交给)的会话ID是
会话ID: iiovfkrf3hesj1um5orasv7it6
此外,当我使用https://(而不是http://)加载第一页时,提交表单会导致重新加载相同的页面(而不是正在加载的下一页).
我已经尝试过的:
ini_set("session.cookie_secure", 0);
和
ini_set("session.cookie_secure", 1);
和
ini_set('session.gc_maxlifetime', 30 * 60); // expires in 30 minutes
和(在脚本的末尾)
session_write_close();
并删除
ini_set("session.cache_limiter", "");
来自phpinfo():
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value …Run Code Online (Sandbox Code Playgroud) android ×7
php ×3
wordpress ×2
e-commerce ×1
feedback ×1
html ×1
java ×1
line-breaks ×1
random ×1
sanitize ×1
service ×1
session ×1
sqlite ×1
textarea ×1
transactions ×1
woocommerce ×1