小编CRO*_*OSP的帖子

在片段或活动中使用工具栏

我正在使用Android-ObservableScrollView库.一切都很好,但我有活动来保存片段,所以所有视图都封装在片段中.在活动中,只有FrameLayout持有碎片.
所以我需要Toolbar在我的应用程序中使用,我有几个想法如何实现它.

  1. 在活动中使用工具栏,在这种情况下,我的布局将包含FrameLayout和Toolbar.通过这种方式,每当我需要对工具栏执行某些操作时,我都会与活动进行通信,我也可以通过使用getSupportedActionBar()片段来获取它.

  2. 在每个片段视图创建中使用工具栏内部片段(在其布局中)设置.每次我更改片段时,我都必须在活动中添加新的工具栏.在某些片段中,我将使用不同的工具栏但不是全部.是否在片段中存储工具栏是一种很好的方法.

我在使用第二种方法时可以看到的问题,如果屏幕上会有多个片段,那么还会有几个工具栏.

请在这种情况下建议正确的方法.
谢谢.

android toolbar android-fragments android-actionbar android-fragmentactivity

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

如何使用 T 和 List<T> 生成类

我正在尝试泛化我的班级结构。
我将更具体地展示我的真实结构。

我正在编写支持离线模式的应用程序,因此我决定使用RobospiceGreenDao ORM来实现我的 ETag 缓存机制。

我只需要缓存GET请求。

首先,我的请求应该扩展基本请求(不是我的),就我而言 RetrofitSpiceRequest<T, V>

T is type of return data   
V is service type, in my case I am  using Retrofit.
Run Code Online (Sandbox Code Playgroud)

问题是List of T默认情况下返回类型不是类型,我需要创建扩展 T 对象数组并将其用作返回类型的子类。

像这样的东西

public class City {
....
....
....
    public static class List extends ArrayList<City> {
    .....
    .....
    }

}
Run Code Online (Sandbox Code Playgroud)

并使用 City.List 作为返回类型。

但是我的 DAO 声明如下

public class CityDao extends AbstractDao<City, Long> {

}
Run Code Online (Sandbox Code Playgroud)

在每个请求 (GET) 中,我需要将特定的 DAO 作为成员,以便缓存与服务器数据不同的数据。或者在没有连接的情况下从本地数据库加载数据。

这里的问题是请求由 T …

java generics android caching robospice

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

Fresco 图片加载回调

我刚刚迁移到Fresco库以在我的应用程序中加载图像。

我需要收听Image Loading Events,当然我在文档Listing to download events中阅读了这篇文章

这正是我所需要的,但是......我不喜欢的东西很少。

我的目标是隐藏,View如果它无法从网上下载它。

  1. 我不能SimpleDraweeView从控制器引用,即使是回调方法。我需要隐藏View,但似乎我无法参考它。

  2. 每次我需要加载图像时,我都需要使用 来创建控制器的对象Builder,这可能会导致在将这种方法与包含图像的大量项目列表一起使用时出现性能问题。

holder.simpleDraweeViewImage.setController(Fresco.newDraweeControllerBuilder() .setControllerListener(controllerListener) .setUri(currentItem.getImage()) .build());

我需要能够引用SimpleDraweeViewfrom 控制器,并且在MVC模式方法中,如果控制器知道视图似乎没问题。

请建议实现我的目标的最佳方式。

谢谢。

performance android callback android-image fresco

5
推荐指数
2
解决办法
5393
查看次数

ButterKnife绑定视图与继承问题

我已经阅读了github上的一些问题,但仍未找到解决方案.

我的问题是我无法在继承的子活动中绑定视图 BaseActivty

我的代码 BaseActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ViewGroup rootView = (ViewGroup) this.findViewById(android.R.id.content);
        View rootBaseView = getLayoutInflater().inflate(R.layout.activity_base, rootView, false);
        ButterKnife.bind(this, rootBaseView);
        ....
         int childLayoutID = getLayoutResId();
        if (childLayoutID != LayoutConstants.NULL_LAYOUT_ID) {
           View childRootView = getLayoutInflater().inflate(childLayoutID, mLinearLayoutFrameContainer, false);
           mLinearLayoutFrameContainer.addView(childRootView);
       }
        ....
        setContentView(rootBaseView);
Run Code Online (Sandbox Code Playgroud)

所以,我有抽象的方法

   public abstract
    @LayoutRes
    int getLayoutResId();
Run Code Online (Sandbox Code Playgroud)

在任何子活动中,我返回特定的布局资源.

BaseActivity正确注入所有视图,但在任何子活动视图中,即使使用@Nullable注释也无法注入视图,视图在运行时为null.

我怎么解决这个问题.也许有一些解决方法?

附加信息

我试过不同的方式

    ButterKnife.bind(this);
    ButterKnife.bind(this,mLinearLayoutFrameContainer);
Run Code Online (Sandbox Code Playgroud)

onCreate方法中的儿童活动.

但仍然是一样的

但对于片段我有相同的情况,它的工作原理.

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ButterKnife.bind(this, view); …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection view butterknife

5
推荐指数
0
解决办法
2096
查看次数

如何在JTable java中插入/删除列

我不知道该怎么做.我正在创建一个应用程序.我需要使用表,所以我使用JTable.但我有很多问题.它似乎工作,但当我尝试删除列时,此列消失(仅在GUI中),但所有信息仍然存在.columncount也不会改变.
我搜索并尝试了很多不同的代码,但没有任何改变.

 public void addTblCol(JTable table,String name) {
    DefaultTableModel model = (DefaultTableModel)table.getModel();
     TableColumn col = new TableColumn(model.getColumnCount());

    col.setHeaderValue(name);
    table.addColumn(col);
    model.addColumn(name);
    this.realColCnt++;
      };
public void delTblCol(JTable table,int index) {
            DefaultTableModel model = (DefaultTableModel)table.getModel();
          TableColumn col = table.getColumnModel().getColumn(index);
    table.removeColumn(col);
    table.revalidate();
    this.realColCnt--;
      };
Run Code Online (Sandbox Code Playgroud)

java swing jtable

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

GCM,注册ID和处理用户登录/注销

我有应用程序,允许用户使用服务器发出的凭据登录,让我们说使用密码和usename进行简单登录.
因此,用户启动应用程序,输入用户名和密码,服务器验证用户身份,保存此信息.(在这种情况下,细节实际上不起任何作用).
我需要实施什么?
我的服务器需要通知用户时有一些事件.让我们考虑更改订单状态.如果是这样,我需要通知用户这个,并在状态栏中显示通知.
我决定使用GCM来完成这项任务.
我读到了这个,并得到了一些问题.

  1. 当用户从android中的GCM服务获取注册ID时,它是不变的还是可以更改的.据我所知,无法保证它始终如一.那么我该如何处理这个ID的刷新.或者,如果我不打电话 GoogleCloudMessaging.getInstance(applicationContext).register,它将保持不变,直到我注册新的或者即使我调用寄存器方法它可以返回相同的ID.我可以在SharedPreferences中保存此ID,例如长时间使用它吗?或者在一段时间后它会变得无效?

  2. 主要问题是我需要在同一台设备上处理多个用户.据我所知,gcm服务发布的注册ID绑定到设备和应用程序.因此,如果新用户注销,并使用新凭据(新用户帐户)登录,我该如何处理?我可以将此ID存储在服务器上的数据库中并使用它直到用户从我的应用程序内的帐户注销,然后将其从数据库中删除,如果此设备上的用户将使用其他帐户登录注册ID,用于通知其他用户?它会起作用吗?或者我错过了什么.

  3. 如何处理用户多个设备.我的群组通知密钥将是来自用户帐户的一些唯一数据(电子邮件,用户名..).如果我理解正确,我需要在用户使用我的服务器帐户登录的所有设备上获取注册ID,并将其映射到一个通知密钥.我应该自己处理通知解雇,还是将上游消息发送到GCM服务器,以便通知其他用户设备通知已被解除?

请帮助理解这项服务.
提前致谢.

android login push-notification google-cloud-messaging

4
推荐指数
1
解决办法
3214
查看次数

Android自定义视图组委托addView

我希望ViewGroup在我的情况下实现自定义,FrameLayout但我希望从xml添加的所有子视图不是直接添加到此视图中,而是FrameLayout包含在此自定义中ViewGroup.让我举例说明一下.

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">
    <FrameLayout
        android:id="@+id/frame_layout_child_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <FrameLayout
        android:id="@+id/frame_layout_top"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</merge>
Run Code Online (Sandbox Code Playgroud)

我想重定向将所有子视图添加到FrameLayoutid frame_layout_child_container.

所以当然我推翻方法addView()是这样

  @Override
    public void addView(View child) {
        this.mFrameLayoutChildViewsContainer.addView(child);
    }
Run Code Online (Sandbox Code Playgroud)

但肯定这不起作用,因为此时mFrameLayoutChildViewsContainer不会添加到根自定义视图.

我的想法总是在这个容器的顶部保留一些视图,frame_layout_top并且所有添加到自定义组件中的子视图都应该去frame_layout_child_container

使用自定义视图的示例

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"/>
    </CustomFrameLayout>
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下TextView应该添加到frame_layout_child_container

是否可以委托ViewGroup像我描述的那样将所有视图添加到子项中.

我有其他的想法,比如bringToFront()每次添加视图时使用方法以保持正确的z轴顺序,或者例如添加视图时,将其保存到数组中,然后在充气自定义视图后将所有视图添加到此子项FrameLayout

建议在这种情况下做什么,以便在每次添加新视图时都不会通过重新填充所有布局来达到性能,如果可以以其他方式实现的话.

performance android android-custom-view android-layout android-view

4
推荐指数
1
解决办法
2424
查看次数

如何遍历Android中的所有活动组件(视图)

我需要获取所有活动组件的数组,然后我需要迭代这个数组并选择,例如,只选择按钮.这该怎么做 ?

android

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

如何在不关闭APP的情况下发送ACRA异常报告(甚至显示对话框)

我试图发送ACRA异常报告,而不关闭应用程序,但它仍然关闭应用程序并显示对话框.

我发送这样的异常报告.

   ACRA.getErrorReporter().handleException(finalException, false);
Run Code Online (Sandbox Code Playgroud)

第二个参数负责关闭应用程序.但它仍然显示对话框和应用程序关闭.

这是我的配置,但我认为它不会有用

@ReportsCrashes(
        reportType = org.acra.sender.HttpSender.Type.JSON,
        httpMethod = org.acra.sender.HttpSender.Method.POST,
        mode = ReportingInteractionMode.DIALOG,
        resDialogText = R.string.crash_dialog_text,
        resDialogIcon = android.R.drawable.ic_dialog_info, //optional. default is a warning sign
        resDialogTitle = R.string.crash_dialog_title, // optional. default is your application name
        resDialogCommentPrompt = R.string.crash_dialog_comment_prompt, // optional. When defined, adds a user text field input with this text resource as a label
        resDialogOkToast = R.string.crash_dialog_ok_toast,// optional. displays a Toast message when the user accepts to send a report.
        formUri = "aaaaaaaaa",
        formUriBasicAuthLogin = "oooooooo", …
Run Code Online (Sandbox Code Playgroud)

java android exception-handling acra acralyzer

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