我有一个应用程序,它有一个使用的活动ScrollView.我需要检测用户何时到达底部ScrollView.我做了一些googleing,我发现这个页面在哪里解释.但是,在这个例子中,那些人扩展了ScrollView.正如我所说,我需要扩展Activity.
所以,我说"好吧,让我们尝试使自定义类扩展ScrollView,覆盖onScrollChanged()方法,检测滚动结束,并相应地采取行动".
我做了,但在这一行:
scroll = (ScrollViewExt) findViewById(R.id.scrollView1);
Run Code Online (Sandbox Code Playgroud)
它扔了一个 java.lang.ClassCastException.我<ScrollView>在XML中更改了标签,但显然它不起作用.我的问题是:为什么,如果ScrollViewExt延伸ScrollView,扔到我脸上ClassCastException?有没有办法检测滚动结束而不会搞得太多?
谢谢大家
编辑:正如所承诺的,这是我的XML重要部分:
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/textterms"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:textColor="@android:color/black" />
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我改变了它从TextView到WebView到能证明里面的文字.我想要实现的是"在完全阅读合同条款之前,接受按钮不会激活"的事情.我的扩展类称为ScrollViewExt.如果我更改标签ScrollView,ScrollViewExt它会抛出一个
android.view.InflateException: Binary XML file line #44: Error inflating class ScrollViewExt
Run Code Online (Sandbox Code Playgroud)
因为它不懂标签ScrollViewEx.我不认为它有解决方案......
谢谢你的回答!
我有一个要在地图上绘制的点数组,它已经被解码了:
- (void) drawRoute:(NSArray *) path {
NSInteger numberOfSteps = path.count;
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [path objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[map addOverlay:polyLine];
}
Run Code Online (Sandbox Code Playgroud)
其中"map"是MKMapView的一个实例,并且路径表示已经解码的点集.
我认为用这条线[map addOverlay:polyLine];就可以了.我在某些页面中看到过这种方法:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
polylineView.strokeColor = [UIColor redColor];
polylineView.lineWidth = 1.0;
return polylineView;
}
Run Code Online (Sandbox Code Playgroud)
polylineView在地图上实际绘制的是什么?我也尝试将MKPolyline(从上面的方法)传递给最后一个方法的"<MKOverlay> overlay"参数,但抛出异常.
我想我很亲密,但我现在不知道该怎么做.
请帮忙!非常感谢你提前.
我正在绘制地图中两点之间的路线.我这样得到了积分:
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.googleapis.com/maps/api/directions/json");
urlString.append("?origin=");// from
urlString.append(Double.toString(src.latitude));
urlString.append(",");
urlString.append(Double.toString(src.longitude));
urlString.append("&destination=");// to
urlString.append(Double.toString(dest.latitude));
urlString.append(",");
urlString.append(Double.toString(dest.longitude));
urlString.append("&sensor=false&mode=");
if (tipo != null) {
urlString.append(tipo);
}
return urlString.toString;
Run Code Online (Sandbox Code Playgroud)
我收到了Google的回复,并获得了JSON:
resp = new JSONObject(builder.toString());
Log.i("Location", "Contenido del kml: "+resp);
JSONArray routeObject = resp.getJSONArray("routes");
JSONObject routes = routeObject.getJSONObject(0);
JSONObject overviewPolylines = routes
.getJSONObject("overview_polyline");
String encodedString = overviewPolylines.getString("points");
ArrayList<LatLng> puntos=decodePoly(encodedString);
Run Code Online (Sandbox Code Playgroud)
我从谷歌获得的回复:(采用JSON格式):
Response: {"status":"OK","routes":[{"waypoint_order":[],"summary":"R-3 and A-3","bounds":{"southwest":{"lng":-3.676540000000001,"lat":40.00040000000001},"northeast":{"lng":-2.99933,"lat":40.43357}},"legs":[{"duration":{"value":3267,"text":"54 mins"},"distance":{"value":85039,"text":"85.0 km"},"end_location":{"lng":-2.99933,"lat":40.00040000000001},"start_address":"Calle del General Díaz Porlier, 91, 28006 Madrid, Spain","end_address":"Camino Veinticuatro, 2, 16400 Tarancón, Cuenca, Spain","start_location":{"lng":-3.676540000000001,"lat":40.43331000000001},"via_waypoint":[],"steps":[{"html_instructions":"Head <b>north<\/b> on <b>Calle …Run Code Online (Sandbox Code Playgroud) 我正在Android中开发一个应用程序.它必须能够拍照,并将该照片发送到网页.这是代码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("someurl");
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); //Here throws the exception
multipartEntity.addPart("data",
new InputStreamBody(
new ByteArrayInputStream(byteArray),
"image/png"));
multipartEntity.addPart("caption", new StringBody(filename));
httpPost.setEntity((HttpEntity) multipartEntity);
Run Code Online (Sandbox Code Playgroud)
我有我的ClassPath所需的库(httpclient,apache-mime4j-core,httpcore和httpmime).它在编译时没有显示任何错误.但是,当我运行该项目时,它会显示"java.lang.NoClassDefFoundError:org.apache.http.entity.mime.MultipartEntity",但该类存在于jar中(确切地说是在httpMime中).这是完整的痕迹:
04-09 10:21:59.362: E/AndroidRuntime(10352): FATAL EXCEPTION: main
04-09 10:21:59.362: E/AndroidRuntime(10352): java.lang.NoClassDefFoundError: org.apache.http.entity.mime.MultipartEntity
04-09 10:21:59.362: E/AndroidRuntime(10352): at com.publidirecta.AppAzafata.IniciarGPSActivity2.enviarImagen(IniciarGPSActivity2.java:206)
04-09 10:21:59.362: E/AndroidRuntime(10352): at com.publidirecta.AppAzafata.IniciarGPSActivity2.onActivityResult(IniciarGPSActivity2.java:196)
04-09 10:21:59.362: E/AndroidRuntime(10352): at android.app.Activity.dispatchActivityResult(Activity.java:3908)
04-09 10:21:59.362: E/AndroidRuntime(10352): at android.app.ActivityThread.deliverResults(ActivityThread.java:2549)
04-09 10:21:59.362: E/AndroidRuntime(10352): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2595)
04-09 10:21:59.362: E/AndroidRuntime(10352): at android.app.ActivityThread.access$2000(ActivityThread.java:121)
04-09 10:21:59.362: E/AndroidRuntime(10352): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:973)
04-09 10:21:59.362: …Run Code Online (Sandbox Code Playgroud) 我最近创建了一个新的本地仓库,并从我们的远程仓库中提取了一些代码.
当我打开项目时,我在控制台中收到一条消息:
Gradle sync failed: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
Consult IDE log for more details
Run Code Online (Sandbox Code Playgroud)
我按照这里的说明设置环境变量(我在Mac中)并检查我的local.properties:
sdk.dir=/Users/admin/Library/Android/sdk
Run Code Online (Sandbox Code Playgroud)
所以,这两件事都解决了,我仍然得到这个错误.我搜索过,但没有解决方案适合我.
有帮助吗?谢谢.
编辑:
这只发生在一个项目中.其余的项目完美无缺.
我知道你不能在主线程中做网络操作,因为Android 3.0.所以,我在一个新的内部打了个电话Thread:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
user=login.getText().toString();
password=pass.getText().toString();
params.add(new BasicNameValuePair("user", user));
params.add(new BasicNameValuePair("pass", password));
Thread thread=new Thread(){
public void run(){
try {
// Throws exception here
response=CustomHttpClient.executeHttpPost(urlogin, params);
response=response.replaceAll("\\s+","");
} catch (Exception e) {
e.printStackTrace();
}
if(response.equals("ok")){
Intent home=new Intent(c, HomeActivity.class);
home.putExtra("username", user);
startActivity(home);
Toast toast=Toast.makeText(
c, getString(R.string.welcome), Toast.LENGTH_LONG);
toast.show();
}else{
if(response.equals("fallo")){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast toast=Toast.makeText(
c, R.string.nologin, Toast.LENGTH_LONG);
toast.show();
login.setText("");
pass.setText("");
}
});
}else if(response.equals("nologin")){
runOnUiThread(new …Run Code Online (Sandbox Code Playgroud) 我的Fragment中有一个RecyclerView,它有几个TextInputLayout.经过一些研究,我设法将onClickListener设置为TextInputLayout,并且正在运行
但
仅当我点击TextInputLayout的提示时,才会触发onClick事件.当我点击TextInputLayout中的EditText时,我希望它被触发.
码:
在我的片段中:
adapter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Logging", "Element: "+rView.getChildAdapterPosition(v));//rView is RecyclerView
RelativeLayout rel=(RelativeLayout)v;
TextInputLayout til=(TextInputLayout) rel.getChildAt(0);
EditText editText=til.getEditText();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
Log.i("Logging", "afterTextChanged called");
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
RecyclerView中每个"行"的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textInputLayout">
<EditText
android:id="@+id/text"
android:layout_width="match_parent" …Run Code Online (Sandbox Code Playgroud) 所以,我在Android Studio中有一个项目,我在插件中使用它,它通过aar文件在Ionic项目中使用.我通过单击Android Studio右侧(其中显示Graddle)生成aar文件,扩展我的项目/任务/构建,然后单击汇编版本.Graddle开始工作,我在myProject/build/outputs/aar中有一个aar文件.一段时间没关系.我在该代码中检测到了一些错误,纠正了它们,并再次生成了aar.
然后,我将该aar文件复制并粘贴到plugin.xml文件中指定的文件夹中:
<resource-file src="aar/library.aar" target="aar/library.aar" />
Run Code Online (Sandbox Code Playgroud)
然后,我使用packagr编译项目(插件,我应该说):
"packagr": "ng-packagr -p package.json && cd dist && npm pack && move *.tgz ../../"
Run Code Online (Sandbox Code Playgroud)
这样,生成了tgz文件.之后,我转到项目根目录(使用该插件的那个)并且执行
npm install @namespace/my-plugin-name
Run Code Online (Sandbox Code Playgroud)
一切都很好看.我在一个设备中运行该项目......并且没有反映出aar中的变化.
难道我做错了什么?为什么这些变化没有反映出来?
我正在开发一个Android库.所以,我有一个将成为.aar文件的模块.
这是此模块的Graddle文件:
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
implementation 'com.esri.arcgis.android:arcgis-android:10.2.9'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation (name:'offending_library_2.0.0', ext:'aar')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Run Code Online (Sandbox Code Playgroud)
除此之外,我还有另一个模块(app模块)用于测试这个库,作为虚拟应用程序.我也在这里加载了这个库,因为如果我没有它就无法编译,这就是app模块的Graddle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.my.company.domain"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0" …Run Code Online (Sandbox Code Playgroud) 我有index.gsp一个页面.在该页面中有一个注册按钮和一个登录按钮.一旦您登录,如果登录正常,该应用程序将再次驱动您index.gsp.我需要,如果用户登录,这些按钮会消失,而是说"你好,[用户名]".我已尝试使用此代码,但它不起作用(它从未登录):
在控制器中:
def dologin(){
def user=Usuario.findByUsernameAndPassword(params.username,springSecurityService.encodePassword(params.password) )
if(user){
redirect (controller:'usuario', action:'index')
}else{
flash.message=message(code:'default.user.not.found', args:[message(code: 'params.username', default:'Usuario'), params.id])
def userlogged = springSecurityService.getCurrentUser()
render view: 'index', model: [user: user]
}
}
Run Code Online (Sandbox Code Playgroud)
在index.gsp中(不完整,只有重要的部分):
<sec:ifNotLoggedIn>
<div id="buttons">
<div id="login"><a href="loginurl">Login</a>
</div>
<div id="register"><a href="registerurl">Registrarse</a>
</div>
</div>
</sec:ifNotLoggedIn>
<sec:ifLoggedIn>
<div id="greet">Hello!</div>
</sec:ifLoggedIn>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
谢谢.