小编Fus*_*dor的帖子

检测ScrollView的结束

我有一个应用程序,它有一个使用的活动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)

我改变了它从TextViewWebView到能证明里面的文字.我想要实现的是"在完全阅读合同条款之前,接受按钮不会激活"的事情.我的扩展类称为ScrollViewExt.如果我更改标签ScrollView,ScrollViewExt它会抛出一个

android.view.InflateException: Binary XML file line #44: Error inflating class ScrollViewExt
Run Code Online (Sandbox Code Playgroud)

因为它不懂标签ScrollViewEx.我不认为它有解决方案......

谢谢你的回答!

android android-scrollview

66
推荐指数
8
解决办法
9万
查看次数

如何在MapView上绘制MKPolyline?

我有一个要在地图上绘制的点数组,它已经被解码了:

- (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"参数,但抛出异常.

我想我很亲密,但我现在不知道该怎么做.

请帮忙!非常感谢你提前.

iphone mkmapview ios

28
推荐指数
1
解决办法
3万
查看次数

使用新的Google Maps API解码折线

我正在绘制地图中两点之间的路线.我这样得到了积分:

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 google-maps polyline

22
推荐指数
3
解决办法
3万
查看次数

Android中的NoClassDefFondError ...但Class位于Classpath中包含的一个jar中

我正在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)

android noclassdeffounderror

18
推荐指数
2
解决办法
1万
查看次数

找不到SDK位置

我最近创建了一个新的本地仓库,并从我们的远程仓库中提取了一些代码.

当我打开项目时,我在控制台中收到一条消息:

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)

所以,这两件事都解决了,我仍然得到这个错误.我搜索过,但没有解决方案适合我.

有帮助吗?谢谢.

编辑:

这只发生在一个项目中.其余的项目完美无缺.

git android

11
推荐指数
1
解决办法
2万
查看次数

android.os.networkonmainthreadexception在新的Thread中

我知道你不能在主线程中做网络操作,因为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)

multithreading android

10
推荐指数
1
解决办法
3350
查看次数

OnClick在RecyclerView内的TextInputLayout内的EditText中

我的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 android-recyclerview android-textinputlayout

9
推荐指数
1
解决办法
3184
查看次数

更新aar文件不会反映更改

所以,我在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 visual-studio android-studio ionic-framework aar

7
推荐指数
1
解决办法
1317
查看次数

程序类型已存在:com.folder.servicehelper.BuildConfig

我正在开发一个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)

build.gradle android-gradle-plugin

7
推荐指数
1
解决办法
2104
查看次数

如何知道用户是否已登录(在GSP中)

我有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)

任何帮助,将不胜感激.

谢谢.

grails spring-security gsp

5
推荐指数
1
解决办法
7520
查看次数