小编Emi*_*Adz的帖子

使用新内容刷新ViewPager的奇怪问题:

我从一个被解析为Application类中对象的Web服务接收数据,在我的例子中,这个对象Report包含一个Tabs应该填充的列表ViewPager.因此,此报告存储在currentReportApplication类的参数中.

每个标签应该是一个页面ViewPager.因此,当我第一次收到数据并解析数据时,所有数据都能完美运行,并且View Pager会填充正确的数据并显示出来.

当我想Report从服务器获取新内容并ViewPager使用已解析为currentReport参数的新数据刷新时,我的问题就出现了.

ViewPager可以刷卡并且有标签导航,因此当我尝试ViewPager使用新的重新实例化时,Report我看到添加了适量的标签tabHost.由于某种原因,新报告的片段覆盖了普通报告的片段.因此,如果新报告中的选项卡数量大于上一个报告中的选项卡,那么我可以看到上一个报告中的选项卡以及部分新选项卡(例如,在第一个报告中我有一个选项卡,以及在新的我有3然后我看到前一个片段和下一个片段中的最后一个片段).

我从本教程开始我的开发并添加了smoe代码:http://thepseudocoder.wordpress.com/2011/10/13/android-tabs-viewpager-swipe-able-tabs-ftw/

这是我的Tab活动代码:

public class TabsViewPagerFragmentActivity extends FragmentActivity implements    ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener 
{
static final String TAG = TabsViewPagerFragmentActivity.class.getSimpleName();
private TabHost mTabHost;
private ViewPager mViewPager;
private HashMap<String, TabInfo> mapTabInfo;
public ViewPagerAdapter mPagerAdapter;
private TextView tvReportName, tvTabTitle;
private Button bBackToParameters;
private Dialog progressDialog;
private SGRaportManagerAppObj application;
private int numberOfTabs = …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

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

Google地图v2中的地图搜索栏

我想在顶部添加一个"搜索栏",Google Maps v2如我在谷歌播放中剪下的这张小图片所示.

谷歌地图吧..

我该怎么做呢?谢谢

android google-maps-api-2

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

如何使用Gradle中的不同资源文件夹为每个flavor创建两个应用程序?

目前我正在开发一个有5种口味的应用程序,这是我的build.gradle文件的一部分:

buildscript {
   repositories {
       mavenCentral()
   }
   dependencies {
       classpath 'com.android.tools.build:gradle:0.14.0'
   }
}

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 20
    buildToolsVersion '20.0.0'

    signingConfigs {
        release {
            storeFile file("")
            storePassword "password"
            keyAlias "alias"
            keyPassword "password"
        }
    }

    lintOptions {
        abortOnError false
    }

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 20

        applicationId 'application.package'
        signingConfig signingConfigs.release
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }

    productFlavors {
        flavor1{
            applicationId 'com.flavor1.package'
        }
        flavor2{
            applicationId 'com.flavor2.package'
        }
        flavor3{
            applicationId 'com.flavor3.package'
        }
        flavor4{
            applicationId …
Run Code Online (Sandbox Code Playgroud)

java android gradle build.gradle android-gradle-plugin

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

在ViewPager中设计Horizo​​ntalScrollView或使用片段:

我需要设计以下屏幕,我需要你的建议:

在此输入图像描述

说明:

标题是静态/固定的,我不需要对它做任何事情.

黄色:这是有趣的部分,我需要设计一个ViewPager类似的屏幕,能够向左/右滚动最多4个屏幕.

红色:在每个屏幕中,我需要添加一个可滚动的表格/网格,如果它不适合屏幕大小.

绿色:可以使用屏幕底部的绿色按钮或通过滚动来完成页面切换ViewPager.

问题是:这种行为可以使用ViewPager或者我应该使用Fragments吗?如果Fragment是要走的路,那么我将如何使用滑动手势实现页面切换?如果它是一个ViewPager然后如何添加内部滚动以及如何使用底部的按钮控制它?

任何帮助将不胜感激,谢谢.

android android-layout android-fragments android-viewpager

8
推荐指数
1
解决办法
8518
查看次数

DataPicker看起来也像新API上的旧设计

所以问题很简单:

DatePicker在我的应用程序中集成了一个.不是作为一个DialogDatePickerView组件(更确切地说是一个View内部Fragment动态显示并从FrameLayout我的主FragmentActiviy布局中包含的内容中删除).

现在我的问题是这个DataPicker看起来像这样: 在此输入图像描述

而不是这样的:

在此输入图像描述

即使我定位较高的API,我也尝试将我的Min SDK设置为16或17,但它也没有任何帮助.

有人知道为什么会这样吗?以及如何显示数据选择器的新外观?最好是在旧版本的Android上?

任何帮助,将不胜感激.

谢谢.

编辑:代码:

DataPickerFragment xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingLeft="6.5dp"
    android:paddingTop="6dp"
    android:paddingRight="8.5dp"
    android:paddingBottom="8.5dp"
    android:background="@drawable/date_picker_background">

    <DatePicker
        android:id="@+id/datePicker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:paddingBottom="40dp" />

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:id="@+id/bCancel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1.0"
            android:onClick="buttonCanceDatePickerOnclick"
            android:text="@string/cancel" />

        <Button
            android:id="@+id/bSave"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1.0"
            android:onClick="buttonSaveDatePickerOnclick"
            android:text="@string/save" />

     </LinearLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

DataPickerFramgnet类:

public class DatePickerFragment extends Fragment {

    private Button bSave, bCancel;

    public …
Run Code Online (Sandbox Code Playgroud)

android datepicker android-fragments

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

将HTTP发布请求更改为HTTPS发布请求:

我有这个方法:

public static String getReportMetadata (String reportId, String sessionId, String url) throws Exception{

    Map<String, Object> jsonValues = new HashMap<String, Object>();
    jsonValues.put("reportID", reportId);
    jsonValues.put("sessionID", sessionId);
    JSONObject json = new JSONObject(jsonValues);

    DefaultHttpClient client = new DefaultHttpClient();

    HttpPost post = new HttpPost(url + GET_REPORT_METADATA_ACTION);

    AbstractHttpEntity entity = new ByteArrayEntity(json.toString().getBytes("UTF8"));
    entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
    post.setEntity(entity);        
    HttpResponse response = client.execute(post);

    return getContent(response);            
}
Run Code Online (Sandbox Code Playgroud)

执行HTTPPost请求当然我AsyncTask用来从服务器获取数据.

我的问题:有人 可以用一个简单的方法向我解释我需要执行哪些步骤来将此连接类型更改为安全连接(也就是使用HTTPS).仅从android的角度来看(意思是客户端应用程序).

更新: 正如建议我尝试只更改链接并添加https而不是http,但它不会返回答案.据我所知,我需要获取并存储自签名证书才能连接到服务器端

UPDATE2: 适用于我的解决方案:

EasySSLSocketFactory:

public class EasySSLSocketFactory implements SocketFactory, LayeredSocketFactory {

private SSLContext …
Run Code Online (Sandbox Code Playgroud)

https post android http

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

某些设备上的自定义ViewPager呈现问题

我开发了一种滚动机制来选择应用程序中的人员.它是自定义视图寻呼机,允许每次在屏幕上显示多个项目(在我的情况下为3),并且两侧都有阴影.

以下是它在Nexus 5,Nexus 4,Galaxy S3等设备上的外观和工作原理:

在此输入图像描述

但是在某些设备上(索尼Xperia和不同类型的摩托罗拉)渲染看起来很糟糕,结果如下:

在此输入图像描述

关于代码,我参考了@Commonsware的这篇博:

http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

第三个选项,你可以在这里找到代码.

这是我的相关代码:

PagerContainer:

    public class PagerContainer extends FrameLayout implements ViewPager.OnPageChangeListener {

    private ViewPager mPager;
    boolean mNeedsRedraw = false;

    public PagerContainer(Context context) {
        super(context);
        init();
    }

    public PagerContainer(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public PagerContainer(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init() {
        //Disable clipping of children …
Run Code Online (Sandbox Code Playgroud)

android rendering view android-viewpager

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

如何使用 https 地址而不是 http 在 web 上运行 Flutter 应用程序:

我正在尝试移植我用 Flutter 为 Android 和 iOS 制作的应用程序,并在网络上运行它。由于我使用 Google 和 Facebook 登录框架,因此即使原始 url 是 localhost,也需要使用“https”地址。我正在使用 Web 服务器运行选项,该选项在 Android Studio 内的 Web 服务器的构建中运行该应用程序。

我正在使用命令行中的以下命令运行 Web 应用程序:

flutter run -d web-server --web-hostname=`hostname` --web-port=8080 --profile -v
Run Code Online (Sandbox Code Playgroud)

并使用我在 Google API 控制台中指定的端口,但由于我没有使用“https”并且连接不安全,我仍然无法在其中一个平台中进行身份验证。

有没有人遇到过这个问题并知道如何解决?我将不胜感激您能在这方面提供的任何帮助。

https dart android-studio flutter flutter-web

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

通过单击/触摸外部删除片段:

我有一些RelativeLayout动态使用代码添加和删​​除的片段.其中一个片段是a ListFragment,并且与其他具有Close和Save Buttons的片段相反,这个片段只包含一个列表.

我的目标是通过在活动中的任何位置单击它以外来关闭/删除此片段.

我找到了以下代码:

@Override
public boolean onTouchEvent(MotionEvent event) {
    // I only care if the event is an UP action
    if (event.getAction() == MotionEvent.ACTION_UP) {
        // create a rect for storing the window rect
        Rect r = new Rect(0, 0, 0, 0);
        // retrieve the windows rect
        this.getWindow().getDecorView().getHitRect(r);
        // check if the event position is inside the window rect
        boolean intersects = r.contains((int) event.getX(), (int) event.getY());
        // if the event is not inside then we …
Run Code Online (Sandbox Code Playgroud)

android touch-event android-fragments

6
推荐指数
1
解决办法
4265
查看次数

如何测试包含的应用是否授予了“允许完全访问”权限?

我正在从事键盘扩展项目。在应用程序代码的某些时候,我需要测试用户是否已授予键盘扩展的“允许完全访问”权限。要做的是,我需要在应用程序端进行这些测试,并在此基础上让用户访问键盘设置或在未授予许可的情况下提醒他。

问题在于此处提供的方法如下:

func isOpenAccessGranted() -> Bool {
    return UIPasteboard.generalPasteboard().isKindOfClass(UIPasteboard)
}
Run Code Online (Sandbox Code Playgroud)

要么:

func isOpenAccessGranted() -> Bool {
let fm = NSFileManager.defaultManager()
let containerPath = fm.containerURLForSecurityApplicationGroupIdentifier(
                    "group.com.example")?.path
var error: NSError?
fm.contentsOfDirectoryAtPath(containerPath!, error: &error)
if (error != nil) {
    NSLog("Full Access: Off")
    return false
}
NSLog("Full Access: On");
return true
}
Run Code Online (Sandbox Code Playgroud)

仅从键盘端工作,因为键盘是唯一受此权限影响的键盘。从包含应用程序的角度来看,这两个方法总是返回true。

有人知道从应用程序一侧进行测试的可靠方法吗?

keyboard ios swift ios-keyboard-extension

6
推荐指数
1
解决办法
1462
查看次数