我找到了两个 SO 线程,它们告诉我如何在对象中居中标题和消息,AlertDialog并通过编写我希望能够调用以居中 any 的方法来伪造我的方式AlertDialog。它在手机和平板电脑上运行良好,甚至可以显示多行消息,无论是否带有'\n's。
public void showCenteredInfoDialog(TextView _title, TextView _message) {
_title.setGravity(Gravity.CENTER);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton("OK", null);
builder.setCustomTitle(_title);
builder.setMessage(_message.getText());
AlertDialog dialog = builder.show();
TextView messageView = (TextView)
dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);
}
Run Code Online (Sandbox Code Playgroud)
我做了大量的定制——即,我对我的发现和所做的事情有一些线索——但有一行让我想知道:
TextView messageView = (TextView) dialog.findViewById(android.R.id.message);
什么是 android.R.id.message?
这是我能找到的所有相关文档:
android.R.id
public static final int message = 16908299
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到有关Android.R.id对象(以及更多)的更多文档?这似乎是一个可能的金矿。
这是我显示的地方AlertDialog:
public void showCenteredInfoDialog(TextView _title, TextView _message) {
_title.setGravity(Gravity.CENTER);
this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton("OK", null);
builder.setCustomTitle(_title);
builder.setMessage(_message.getText());
AlertDialog dialog= builder.show();
TextView messageView = (TextView) dialog.findViewById(android.R.id.message);
messageView.setGravity(Gravity.CENTER);
}
Run Code Online (Sandbox Code Playgroud)
我想要的字体是monospace.
我需要修改xml文件吗?Java 可以单独处理吗?(如果 Java 可以处理它,它可能需要 API 21,是吗?)
我想知道添加messageView.setFontFeatureSettings("...");或messageView.setTypeface(...)以某种方式引用monospace是否可行。我找不到 的 String 参数的语法setFontFeatureSettings。
在下面生成的代码中,v永远不会被引用.它在点击和收听以及后续行动方面究竟代表什么?
btnReturnToUI.setOnClickListener
(new OnClickListener()
{
public void onClick(View v) /////////////////////////////
{
MainActivity currentActivity = (MainActivity) getActivity();
currentActivity.showUI();
}
}
);
Run Code Online (Sandbox Code Playgroud) 我收到此错误:
请通过更新google-services插件的版本来修复版本冲突(有关最新版本的信息,请访问 https://bintray.com/android/android-tools/com.google.gms.google-services/)或将com.google.android.gms的版本更新为16.0.1.
我认为我得到的错误是由于实施,com.google.firebase:firebase-messaging:17.1.0因为如果我删除它,建立成功.但是在尝试com.google.android.gms用于消息传递的16.0.1版本时,我得到以下消息:
无法解决错误
我认为错误意味着com.google.firebase:firebase-messaging:16.0.1不可用.我的问题怎么解决?
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 27
defaultConfig {
applicationId "in.anamika.anamika"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'
implementation 'com.googlecode.libphonenumber:libphonenumber:8.9.7'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:design:27.1.1'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation …Run Code Online (Sandbox Code Playgroud) 在 Netbeans 中,当我做出十几个破坏性大于修复性的更改时,通常我会通过查看历史记录立即找到罪魁祸首,找到罪魁祸首,修复它,然后继续我的快乐之路。需要很少的时间。
但我经常发现 Netbeans 显示了近 100 个更改。几乎所有这些都涉及如下两对历史记录行的更改(每对中最先列出的旧行):
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
// </editor-fold>//GEN-END:initComponents
// </editor-fold>
Run Code Online (Sandbox Code Playgroud)
绝大多数更改似乎只发生在 Swing 设计生成的语句上。
为什么添加//GEN-BEGIN:initComponents并//GEN-END:initComponents添加到我没有更改的行上?
我做了什么导致这个?
我怎样才能避免这种情况?(除了停止使用 Swing 设计,我已经在其他项目中使用了它,但这是一个我有点坚持的旧项目。)
我能做些什么来修复它,这样我才能看到我改变的行?
我去了这里,但它没有说明“您还可以删除 //GEN-FIRST 和 //GEN-LAST 以使其在 Netbeans 中可编辑”。
为我的项目引入排序非常容易JTable:
//Existing code
dftTableModel = new DefaultTableModel(0 , 4);
tblOutput = new JTable(dftTableModel);
//Added code
RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(dftTableModel);
tblOutput.setRowSorter(sorter);
Run Code Online (Sandbox Code Playgroud)
但由于我将Size列格式化为带逗号的文本,因此它没有排序:
我从未使用过,Comparator但找到了一个我修改过的示例。
public class RowSorterWithComparator
{
static Comparator compareNumericStringsWithCommas;
static TableRowSorter sorter;
static JTable tblOutput;
static JScrollPane pane;
static JFrame frame;
static DefaultTableModel dftTableModel;
// static TableColumnAdjuster tca ;
static DefaultTableCellRenderer rightRenderer;
static JButton btnOpen;
static String[] columnNames = { "Date", "Size" };
static Object rows[][] =
{
{"7/27/2015","96","mavenVersion.xml","C:\\Users\\Dov\\.AndroidStudio1.2\\config\\options\\"},
{"7/27/2015","120","keymap.xml","C:\\Users\\Dov\\.AndroidStudio1.2\\config\\options\\"},
{"7/27/2015","108","Default.xml","C:\\Users\\Dov\\.AndroidStudio1.2\\config\\inspection\\"},
{"4/27/2015","392","key pay.txt","C:\\Users\\Dov\\A\\"}, …Run Code Online (Sandbox Code Playgroud) 我上周才处理过SQLite数据库.我很久以前曾经处理过SQL,但我仍然有它的要点.
下面的代码从asset命名中读取140,000个单词dictionary.dic,并将每个单词与其一起插入SQLite数据库status.我的期望是它需要很长一段时间,但是在7英寸平板电脑上只需要25分钟,但仍然没有接近完成(在P).
我应该说,"嘿,这是一百万分之一行.这需要一段时间." 但我可以阅读所有140,000个单词ArrayList<String>在30秒内.我意识到创建数据库有很多开销,但很多很多分钟?
我应该说,"好吧,想想如果不使用需要多长时间AsyncTask"并接受它,因为这是一次性的任务?但这真是令人讨厌,花了这么长时间.这是令人不快的.
我应该说,"你为什么要使用Scanner?难怪它花了这么长时间?" 并做一些其他asset访问?或者这不是真正的问题吗?
我也没用过AsyncTask.我在滥用doInBackground吗?我在那里有很多代码; 并非所有人都必须去那里,但循环就是这样,而且还有挂断.
使用database.Insert,这被称为"便利方法",是什么导致挂断?我应该使用Cursor和吗?query不是吗?我不完全确定我是怎么做到的.从Deitel的"地址簿"应用程序"Android for Programmers - App Driven ..."中得到了我的想法,但他的数据库一开始就是空的.
我已经充分考虑了这个问题.我只需要有经验的人来看看并说:"好吧,这就是你的问题." 我无法证明在没有任何关于是否有任何帮助的指导下重新开始重做我想到的所有事情.
public class DatabaseConnector //extends ArrayList<String>
{
public static Cursor cursor ;
Scanner scDict;
InputStream stream = null;
Context mContext;
AssetManager mAssets;
public static final String DATABASE_NAME = "Dictionary";
public static final String TABLE_NAME = "wordlist";
public …Run Code Online (Sandbox Code Playgroud) ===主要编辑(和次要编辑)===
我已经完全重写一个我前两天提交,因为它是基于两个人的代码不那么好深思熟虑的帅哥,从gitgo一个非常不合适的想法的代码.我不好好研究不够.
不过,@ F. Böller非常友好地回答了关于我原始代码的问题,并说我需要comparator在这个背景下定义:
TreeSet<ArrayList<Integer>> hs = new TreeSet<>(comparator);.
这就是我需要谷歌java树木比较器的所有鼓励,并根据我在那里看到的修改.这一点都不容易,我承认我仍然不太明白为什么下面的语法基本上都是我需要的,但是如果没有Googled链接上面的例子,我就永远不会想到它.
TreeSet<Leaf> theTreeSet = new TreeSet<>(new HowToCompareLeaves());
===次要编辑 - 以下行错误:
无论如何,下面的代码工作得很好(根据每个"叶子"中的第一个元素排序).
===以下行是正确的:
无论如何,下面的代码工作得很好(对每个"叶子"中的所有元素进行排序和比较).
===结束次要编辑===
但是,如果有人可以解释(对于之前从未使用过的人)上面的线实际上做了什么,我会很感激.它似乎定义了一个新的实例,它被定义为比较由......组成的数据项的方法.是吗?它是一个新的构造函数,需要定义如何将新元素分类到自身?TreeSetarTreeSet
package treed;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetExample {
public static final int NR = 4, NC = 3;
public static void main(String a[])
{
ArrayList<Leaf> ar = new ArrayList<>(NR);
for (int …Run Code Online (Sandbox Code Playgroud) 我想要一个Android Studio (AS) 1.1.0项目创建两个APK文件:一个用于付费版本,一个用于我的Google Play商店(GPS)应用程序的免费版本.使用gradle构建变体("flavors").我非常接近.我从一个AS项目上传了两个版本 - 免费和付费.
唯一相对较小的问题:我不能让这两个版本有不同的图标,我不能让动作栏显示不同的应用程序的不同标题.
由于我们处理的是味道,因此有三个AndroidManifest.xml文件:一个是我可以编辑的,两个是gradle生成的,每个都有一个.如果我编辑它们,编辑将在下一次构建时丢失.
这是"我的" AndroidManifest.xml:
package="com.dslomer64.kakurocombosbuildvariants" >
<application
android:icon="@drawable/kc_icon_free">
android:label="@string/app_name"
android:allowBackup="true"
>
<activity
android:screenOrientation="portrait"
android:icon="@drawable/kc_icon_free"
android:name=".MyActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
除了包名称,生成的AndroidManifest.xml文件是相同的(这里是一个):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dslomer64.kakurocombosbuildvariants.pro"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:label="KC" >
<activity
android:name="com.dslomer64.kakurocombosbuildvariants.MyActivity"
android:icon="@drawable/kc_icon_free"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
我正在根据这里 …
我正在 Android 上实现一个 Content Provider。我希望我的查询不仅仅是精确匹配——有没有办法在内容提供者查询方法中指定“喜欢”查询?
当前代码。请注意,这mSearchString是用户提供的字符串——我目前正在使用它来查询UserDictionary,它返回任何内容的唯一方法是mSearchString与UserDictionary. 我希望能够匹配部分查询(例如,如果字典中有苹果、阿姨和实用,我想搜索“a”并将它们全部返回)。
mSelectionClause = UserDictionary.Words.WORD + " = ?";
// Moves the user's input string to the selection arguments.
// Remember to add code here to check for invalid or malicious input.
mSelectionArgs[0] = mSearchString;
// Does a query against the table and returns a Cursor object
Cursor mCursor = getContentResolver().query(
UserDictionary.Words.CONTENT_URI, // The content URI of the words table
mProjection, // The columns to return for …Run Code Online (Sandbox Code Playgroud) 请考虑此计划细分:
Cursor cursor = mDatabase.query(TABLE_NAME, mColumns, null, null,null, null, null);
int nRows = cursor.getCount();
Run Code Online (Sandbox Code Playgroud)
请注意,从Log下面的输出中,这会将正确的行数返回到nRows-86000.
以下是任何精通SQL的开发人员都希望将86000返回到x:
Cursor c2 = mDatabase.rawQuery("select count(*) from " + TABLE_NAME, null);
int x = c2.getCount();
Run Code Online (Sandbox Code Playgroud)
这就是为什么他们会期望--sqlite3.exe产生这样的结果:
sqlite> select count(*) from wordlist;
86000
Run Code Online (Sandbox Code Playgroud)
但是,xAndroid SQLite 返回的结果是1.
这Log是上面代码底部的语句:
Log.w("`````dbDump","rows: " + nRows + " or is it " + x + " rows?");
Run Code Online (Sandbox Code Playgroud)
这是它的输出:
W/`````dbDump: rows: 86000 or is it 1 rows?
Run Code Online (Sandbox Code Playgroud)
答案是数据库有86000行,而不是1.
我的问题很简单(并在标题中说明):
为什么有人试图(即使松散地)模拟SQL设计常用函数,例如 …