我正在开发Android应用程序(API 15及更低版本).在我的UI中,我有一个TextView元素,我希望人们能够从中进行选择和复制.这是我的元素的样子:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp" />
<TextView
android:id="@+id/chat_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:padding="8dp" />
<TextView
android:id="@+id/chat_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="2dp"
android:padding="8dp"
android:textSize="18sp"
android:gravity="right"
android:textColor="@color/BLACK"
android:textIsSelectable="true"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
此TextView位于使用SimpleCursorAdapter填充的ListView中.这个ListView看起来像这样:
<ListView
android:id="@+id/chat_text_display"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginTop="2dp"
android:layout_marginRight="2dp"
android:layout_marginBottom="2dp"
android:layout_marginLeft="2dp"
android:padding="5dp"
android:background="@color/WHITE"
android:divider="@null"
android:divider_height="0dp"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"/>
Run Code Online (Sandbox Code Playgroud)
ListView在LinearLayout中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/custom_border">
<ListView
android:id="@+id/chat_text_display"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginTop="2dp"
android:layout_marginRight="2dp"
android:layout_marginBottom="2dp"
android:layout_marginLeft="2dp"
android:padding="5dp"
android:background="@color/WHITE"
android:divider="@null"
android:dividerHeight="0dp"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal"
android:layout_marginTop="2dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="2dp"
android:layout_marginLeft="2dp">
<Button
android:id="@+id/text_send"
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) 我刚刚将我的Android Studio从1.5升级到2.0升级(即安装了全新版本).升级似乎进展顺利,但是当我打开它时,当Gradle正在同步我的项目时,我的项目出现问题.
Gradle同步运行几分钟后,我收到此错误:
Failed to sync Gradle project MyProject
Unknown host 'jcenter.bintray.com'. You may need to adjust the proxy settings in Gradle.
Error: Enable Gradle "offline mode' and sync project
Learn about configuring HTTP proxies in Gradle
Run Code Online (Sandbox Code Playgroud)
所以,我点击链接说:
Enable Gradle "offline mode' and sync project
Run Code Online (Sandbox Code Playgroud)
然后Gradle旋转一两秒,我现在有这样的信息:
Failed to sync Gradle project MyProject
Error: No cached version of com.android.tools.build:gradle:1.3.0 available for offline mode.
Disable Gradle 'offline mode' and sync project
Run Code Online (Sandbox Code Playgroud)
所以,我点击这个链接:
Disable Gradle 'offline mode' and sync project
Run Code Online (Sandbox Code Playgroud)
我又回到了第一个错误.
我正在处理的机器100%脱机.它没有,也不会有任何形式的网络连接.我想我需要禁用某种需要互联网的检查,但我不确定是什么.这是可修复的,还是我必须降级回Android Studio …
我有一些非常基本的Java问题,我想一劳永逸地理解这些问题.我有以下简短的代码:
public class VeryBasicJava{
public static void main(String[] args){
int x = 3;
int y = 4;
swapMe(x, y);
}
private void swapMe(int a, int b){
int a;
int b;
int tmp = a;
this.a = b;
this.b = a;
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我得到了可怕的"非静态方法swapMe(int,int)无法从静态上下文引用"错误.另外,我得到"a已在swapMe(int,int)中定义","b已经在swapMe(int,int)中定义"
我需要最终通过我的厚厚的头骨,是"非静态方法"错误,它是如何(为什么)引起的,以及如何避免它.
此外,我假设你可以做我试图用'swapMe'方法中的'a'和'b'变量做的事情.我以为我可以传入'a'和'b',但也创建新变量'a'和'b',并用"this"关键字引用它们.
我知道这是非常基本的,但这两个"问题"是我使用Java的两个主要问题,并且出于某种原因,似乎无法正确学习.
谢谢大家,花时间阅读本文.祝你有美好的一天.
前段时间我在一块电路板上看到了一个帖子,其中有人谈论在PHP中嵌入HTML的人.我做了很多PHP开发,但我仍然在同一文档中交错HTML和PHP.有没有更好的方法来做到这一点,我做错了吗?我知道在JSP/JSF中他们使用带有命名空间的XML文档来插入他们的HTML代码,所以我想知道是否有一个类似PHP的功能,我应该利用它.
感谢您抽出宝贵时间阅读.:-)
我"试图"抓取页面中具有以下结构的网页:
<p class="row">
<span>stuff here</span>
<a href="http://www.host.tld/file.html">Descriptive Link Text</a>
<div>Link Description Here</div>
</p>
Run Code Online (Sandbox Code Playgroud)
我正在使用curl抓取网页:
<?php
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, "http://www.host.tld/");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($handle);
curl_close($handle);
?>
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,发现我不应该使用正则表达式来解析从卷曲返回HTML,而且我应该使用PHP DOM.这就是我这样做的方式:
$newDom = new domDocument;
$newDom->loadHTML($html);
$newDom->preserveWhiteSpace = false;
$sections = $newDom->getElementsByTagName('p');
$nodeNo = $sections->length;
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo $printString . "<br>";
}
Run Code Online (Sandbox Code Playgroud)
现在我并不假装我完全理解这一点,但我得到了要点,我确实得到了我想要的部分.唯一的问题是,我得到的只是HTML页面的文本,就像我从浏览器窗口中复制它一样.我想要的是实际的HTML,因为我想提取链接并使用它们,如下所示:
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo "<a href=\"<extracted link>\">LINK</a> " . $printString . "<br>";
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我无法获得链接,因为我只获取网页的文本而不是我想要的来源.我知道"curl_exec"正在拉HTML,因为我已经尝试过了,所以我相信DOM在某种程度上剥离了我想要的HTML.
我已成功为我的Android应用程序创建了一个有效的AlertDialog:
public class MyClass extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
ArrayList selectedItems = new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.pick_toppings)
builder.setMultiChoiceItems(R.array.my_array, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
selectedItems.add(which);
} else if (selectedItems.contains(which)) {
selectedItems.remove(Integer.valueOf(which));
}
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// do stuff here ...
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int …Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用和外部连接USB条形码/ RFID扫描仪的应用程序.正在扫描的数据是"复合"数据.这是一个例子:
=+03000=W12560712345600=%2800&>0090452359
Run Code Online (Sandbox Code Playgroud)
那是来自复合数据扫描.数据中的分隔符是等号(=)或&符号(&).第一位=+03000说扫描中有三个数据部分:
=W12560712345600
=%2800
&>0090452359
Run Code Online (Sandbox Code Playgroud)
该数据可以具有从1到N的任意数量的数据部分.
在我的Android应用程序中,我有一个包含三个EditText元素的表单.我需要对这个复合扫描数据做的是使用分隔符将其分解,并将每个数据粘贴到适当的EditText字段中.
经过多次痛苦之后,我已经意识到我不能只操纵标准输入,并且我需要TextWatcher在我的一个EditText字段上使用捕获扫描数据以便我可以操作它.
我的问题是我无法弄清楚如何做到这一点.这是我有的:
activity_main.xml中
<LinearLayout>
<TextView />
<EditText android:id="@+id/datafield01" />
<EditText android:id="@+id/datafield02" />
<EditText android:id="@+id/datafield03" />
<Button />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText dataField01 = (EditText)findViewById(R.id.datafield01);
EditText dataField02 = (EditText)findViewById(R.id.datafield02);
EditText dataField02 = (EditText)findViewById(R.id.datafield03);
dataField01.addTextChangedListener(editTextWatcher);
}
TextWatcher editTextWatcher = new TextWatcher(){
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int …Run Code Online (Sandbox Code Playgroud) 我正在开发一个允许用户搜索我们的数据库的应用程序。当用户输入搜索词时,应用程序会访问 API 端点并返回数据。然后我显示数据。
当 API 返回数据时,我有一个范围服务:
services.AddScoped<AppState>();
Run Code Online (Sandbox Code Playgroud)
这使得每个返回的数据集可以在应用程序的所有组件中使用。
页面加载后SearchResults.razor,它就会从我的范围服务中获取结果,然后绘制页面的其余部分。
我需要一个“加载”微调器来放置数据,直到 API 返回数据,这可能需要很长时间,具体取决于搜索的数据量。
我的问题是,我无法弄清楚使用什么作为真/假“触发器”来了解是否显示数据或加载旋转器,或者在 API 向我发送数据后如何刷新页面。
我下面的内容仅适用于第一次初始搜索(从我的Index.razor页面),但不适用于任何包含的“过滤器”组件。
搜索结果.razor:
@page "/searchresults"
@layout PageTopComponents
<Header.razor></Header.razor>
<LeftMenu.razor>
<FilterRazorComponent01.razor></FilterRazorComponent01.razor>
<FilterRazorComponent02.razor></FilterRazorComponent02.razor>
<FilterRazorComponent03.razor></FilterRazorComponent03.razor>
<FilterRazorComponent04.razor></FilterRazorComponent04.razor>
</LeftMenu.razor>
<MainContentComponent.razor>
// CONTENT HERE SHOULD BE VISIBLE WHEN DATA HAS ARRIVED, OTHERWISE IT SHOULD SHOW A "WAITING" SPINNER
@if(API_Data_Received != null && API_Data_Received.count > 0){
foreach(){
// API Retrieved Data Here
}
} else {
// Loading Spinner
}
<ContinueSearch.razor></ContinueSearch.razor>
<Paginator.razor @ref="PaginatorComponentReference">
<ChildContent>
// THIS IS WHERE I …Run Code Online (Sandbox Code Playgroud) 我知道这听起来像一个广泛的问题,但我可以用一个例子来缩小范围.我在Java上非常新.对于我的一个"学习"项目,我想创建一个内部MD5文件,供我们使用.我开始非常简单,尝试散列字符串,然后再转到文件.我创建了一个名为MD5Hasher.java的文件并编写了以下内容:
import java.security.*;
import java.io.*;
public class MD5Hasher{
public static void main(String[] args){
String myString = "Hello, World!";
byte[] myBA = myString.getBytes();
MessageDigest myMD;
try{
myMD = MessageDigest.getInstance("MD5");
myMD.update(myBA);
byte[] newBA = myMD.digest();
String output = newBA.toString();
System.out.println("The Answer Is: " + output);
} catch(NoSuchAlgorithmException nsae){
// print error here
}
}
}
Run Code Online (Sandbox Code Playgroud)
我访问了java.sun.com以查看java.security的javadoc以了解如何使用MessageDigest类.阅读后我知道我必须使用"getInstance"方法来获取我可以使用的可用MessageDigest对象.Javadoc继续说"使用更新方法通过它处理数据." 所以我查看了更新方法并确定我需要使用我给它提供字符串的字节数组的那个,所以我添加了那个部分.Javadoc接着说:"一旦更新了所有要更新的数据,就应该调用其中一个摘要方法来完成哈希计算." 我再次看了一下方法,看到摘要返回了一个字节数组,所以我添加了那个部分.然后我在新的字节数组上使用"toString"方法来获取我可以打印的字符串.然而,
答案是:[B @ 4cb162d5
我在StackOverflow上做了一些调查,并在此处找到了一些信息:
给出了以下示例:
String plaintext = 'your text here';
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt …Run Code Online (Sandbox Code Playgroud) 假设我有这个:
SomePage.razor:
@inject Something something
@page "/somepage"
<h1> My Page </h1>
@code {
// Using "Something" here ...
}
Run Code Online (Sandbox Code Playgroud)
这有什么根本区别吗:
AnotherPage.razor:
@page "/anotherpage"
<h1> My Page </h1>
@code {
[Inject]
Something something { get; set; }
// Using "Something" here ...
}
Run Code Online (Sandbox Code Playgroud)
或者它们的工作方式相同,这只是“程序员的偏好”?