我有一个configuration.xml文件,我持有所有(是的,你猜对了!)..配置字符串和值和东西.
其中一个值是一个字符串,它是一个oauth客户端ID,它有一个连字符..
<string name="server_clientid">5467656-blahblahblah.apps.googleusercontent.com</string>
Run Code Online (Sandbox Code Playgroud)
现在我收到警告信息..
Replace "-" with an "en dash" character (–, –) ?
Run Code Online (Sandbox Code Playgroud)
好吧,但是如果我使用这个,那么当我在应用程序中获取它时,客户端ID无效.我不能用– 基本上.我该如何解决这个问题?
我想创建一个方法,搜索一小段文本(通常不超过256个字符),以存在大约20个不同的单词.如果它在文本中找到一个,无论大小写都返回true.
该方法将执行相当多(不是疯狂的数量),因此它必须尽可能高效.你觉得这里最好的是什么?
这20个字不会改变.它们是静态的.但要扫描的文本呢.
我经常遇到以下异常,我真的完全确定如何处理它.
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: android.database.sqlite.SQLiteException: error code 5: database is locked
at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1704)
at azurewing.android.db.provider.NotificationProvider.delete(NotificationProvider.java:80)
at azurewing.android.db.provider.Provider.delete(Provider.java:87)
at azurewing.android.db.provider.NotificationProvider.delete(NotificationProvider.java:1)
at android.content.ContentProvider$Transport.delete(ContentProvider.java:234)
at android.content.ContentResolver.delete(ContentResolver.java:692)
at azurewing.android.db.table.NotificationTable.removeAllNotifications(NotificationTable.java:89)
at azurewing.android.sync.SyncReceiver$1$1.doInBackground(SyncReceiver.java:52)
at azurewing.android.sync.SyncReceiver$1$1.doInBackground(SyncReceiver.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
... 4 more
Run Code Online (Sandbox Code Playgroud)
我通过AsyncTask访问ContentProvider(NotificationProvider here).ContentProvider当然使用数据库.
@Override
public int delete(Uri uri, String selection, String[] selectionArgs)
{
SQLiteDatabase db = database.getWritableDatabase();
int …
Run Code Online (Sandbox Code Playgroud) 使用时是否可以AppCompatActivity
指定getSupportActionBar().setDisplayHomeAsUpEnabled(true)
使用样式,而不是以编程方式这样做?
我可以指定可绘制对象本身,但如何使用样式启用它?
<style name="MyActivityTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarTheme">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="homeAsUpIndicator">@drawable/ic_clear</item>
<!-- Enable the above using a style attribute -->
</style>
Run Code Online (Sandbox Code Playgroud) 如果我有一个TableLayout结构(下面)定义了2个ImageViews.一个还指定宽度/高度的像素值.这正如我所料 - Pic 1的大小调整为50px,pic2保持原始大小:
<TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<TableRow>
<ImageView android:src="@drawable/pic1" android:layout_width="50px" android:layout_height="50px" />
<ImageView android:src="@drawable/pic2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)
但我真的需要以编程方式执行上述操作,所以我这样做......
TableLayout tableLayout = new TableLayout(ctx);
TableRow tableRow = new TaleRow(ctx);
ImageView imageViewOne = new ImageView(ctx);
ImageView imageViewTwo = new ImageView(ctx);
imageViewOne.setImageResource(R.drawable.pic1);
imageViewTwo.setImageResource(R.drawable.pic2);
imageViewOne.setLayoutParams(new LayoutParams(50, 50));
rootView.addView(tableLayout);
tableLayout.addView(tableRow);
tableRow.addView(imageViewOne);
tableRow.addView(imageViewTwo);
Run Code Online (Sandbox Code Playgroud)
上面的内容与XML不同 - 在向它添加setLayoutParams()方法之后,第一个ImageView根本没有使用编程方式显示.
我在这里错过了什么,有什么不同之处?
谢谢!