小编Ted*_*Ted的帖子

退出申请不赞成?

继续我学习Android的尝试,我只是阅读以下内容:

问题:用户是否可以选择终止应用程序,除非我们使用菜单选项来杀死它?如果不存在这样的选项,用户如何终止该应用程序?

答案:(Romain Guy):用户没有,系统会自动处理.这就是活动生命周期(特别是onPause/onStop/onDestroy)的用途.无论你做什么,都不要放"退出"或"退出"应用程序按钮.它与Android的应用程序模型无关.这也与核心应用程序的工作方式相反.

呵呵,我在Android世界中采取的每一步都会遇到某种问题=(

显然,你无法在Android中退出应用程序(但Android系统可以很好地完全破坏你的应用程序).那是怎么回事?我开始认为编写一个充当"普通应用程序"的应用程序是不可能的 - 用户可以在他/她决定这样做时退出应用程序.这不应该依赖操作系统来做.

我尝试创建的应用程序不是Android Market的应用程序.它不是一般公众"广泛使用"的应用程序,它是一个将用于非常狭窄的业务领域的商业应用程序.

我实际上真的很期待为Android平台开发,因为它解决了Windows Mobile和.NET中存在的许多问题.然而,上周对我来说有点懈怠...我希望我不必放弃Android,但它现在看起来不太好=(

有没有办法让我真的退出申请?

android

1131
推荐指数
29
解决办法
27万
查看次数

使用Jackson(JSON)序列化 - 获得"没有找到序列化器"?

尝试使用Jackson序列化一个非常简单的对象时,我得到了一个例外.错误:

org.codehaus.jackson.map.JsonMappingException:没有为类MyPackage.TestA找到序列化程序,也没有发现创建BeanSerializer的属性(为了避免异常,请禁用SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS))

下面是序列化的简单类和代码.

任何人都可以告诉我为什么会收到此错误?

public class TestA {
    String SomeString = "asd";
}

TestA testA = new TestA();
ObjectMapper om = new ObjectMapper();
try {
    String testAString = om.writeValueAsString(testA); // error here!

    TestA newTestA = om.readValue(testAString, TestA.class);
} catch (JsonGenerationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (JsonMappingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

248
推荐指数
10
解决办法
27万
查看次数

在OnClickListener里面我无法访问很多东西 - 如何处理?

在OnClickListener中,我无法访问范围"外部"的大多数变量,如下所示:

findViewById(R.id.Button01).setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent mainApps = new Intent(Intent.ACTION_MAIN);
                mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
                List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
                /*
                Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity");
                startActivity(intent);*/
            }

        });
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我需要获取PacketManager,我无法得到它,因为我没有在OnClickListener中提供Context.

我可以在外面做一个静态引用,并在里面使用它,但这是正确的吗?似乎很奇怪必须一直这样做?

java android

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

为什么应用程序在未连接到计算机时等待调试器?

似乎我在Android世界中采取的每一步都遇到了问题.我很快就会在StackOverflow上提出20个问题hehe =)

通常,我通过USB将HTC Hero连接到计算机,然后以调试模式或正常模式启动应用程序.

So, the last time I ran the app in normal mode. Then I disconnect the device (I want to try to have it "free", not connected to computer) and I start the app from the menu. When I do that I get a popup saying "Application xxx is waiting for the debugger to attach" and there it stops and eventually dies.

Why is it waiting for the debugger, when the last time I ran the app …

android

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

Dialogs/AlertDialogs:如何在对话框启动时"阻止执行"(.NET风格)

来自.NET环境我现在正在寻找了解Dialog如何在Android中运行的方法.

在.NET中,调用MessageBox.Show(...)创建并显示弹出对话框.在对Show的调用中,我可以指定弹出窗口中应该有哪些按钮,例如:

DialogResult myDialogResult = MessageBox.Show("My text here", "My caption here", MessageBoxButtons.YesNoCancel);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,当在弹出窗口中按下按钮时,对Show的调用将返回一个DialogResult,通知我单击了哪个按钮.请注意,在.NET中,执行将在调用Show(...)的行中停止,因此它可以在按下按钮时返回值.

如果我在上面的例子中按"否",则myDialogResult将等于

myDialogResult == DialogResult.No
Run Code Online (Sandbox Code Playgroud)

由于我发现使用/创建弹出窗口的.NET方式非常简单直观,我想在Android中创建弹出窗口的方式.

所以,问题是,是否有人知道如何"停止执行",如MessageBox.Show,然后每按一次按钮返回一个值(对话框消失)?

问候


编辑1: 更清楚一点:

我需要执行停止并等到用户选择了一个按钮来单击弹出窗口.显示对话框的调用后面的代码取决于在对话框中单击的按钮.

这就是为什么我不能使用Erich和Alex所建议的,因为在下面建议的onClick方法中编写代码是行不通的.原因是我无法继续"正常执行".让我举一个例子:

让我举一个例子:

int nextStep = 0; // this variable will not be reached from within the onClick-methods

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Hello!")
       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                nextStep = 1; // *** COMPILER ERROR!! ***
            }
        })
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int …
Run Code Online (Sandbox Code Playgroud)

android

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

Android Studio和android.support.v4.app.Fragment:无法解析符号

我正在试用Android Studio而不是Eclipse.我安装它然后启动一个全新的项目并按照向导.我没有添加自己的代码.

然后,我右键单击以创建一个新组件,一个新的片段:

在此输入图像描述

并选择一个新片段:

在此输入图像描述

我一看到,就看到编译错误:

在此输入图像描述

...所以我开始谷歌搜索,并发现我需要安装和引用支持库4,我做.当我检查build.gradle(不管是什么,来自Eclipse的新手),我看到:

在此输入图像描述

但我改变了

在此输入图像描述

因为他们这样说这里.重新编译之后,错误仍然存​​在.然后我直接引用.jar文件,如下所示:

在此输入图像描述

并再次重新编译yada yada,但这也没有帮助.

这种行为对我来说似乎很奇怪.我在这里错过了什么?这是SDK Manager视图:

在此输入图像描述

那么,我错过了什么?谢谢=)

android android-fragments android-studio

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

使用JSON协议处理版本控制的最佳方法是什么?

我通常在C#中编写代码的所有部分,在编写序列化的协议时,我使用FastSerializer快速高效地序列化/反序列化类.它也非常容易使用,并且非常直接地进行"版本控制",即处理不同版本的序列化.我通常使用的东西,看起来像这样:

public override void DeserializeOwnedData(SerializationReader reader, object context)
{
    base.DeserializeOwnedData(reader, context);
    byte serializeVersion = reader.ReadByte(); // used to keep what version we are using

    this.CustomerNumber = reader.ReadString();
    this.HomeAddress = reader.ReadString();
    this.ZipCode = reader.ReadString();
    this.HomeCity = reader.ReadString();
    if (serializeVersion > 0)
        this.HomeAddressObj = reader.ReadUInt32();
    if (serializeVersion > 1)
        this.County = reader.ReadString();
    if (serializeVersion > 2)
        this.Muni = reader.ReadString();
    if (serializeVersion > 3)
        this._AvailableCustomers = reader.ReadList<uint>();
}
Run Code Online (Sandbox Code Playgroud)

public override void SerializeOwnedData(SerializationWriter writer, object context)
{            
    base.SerializeOwnedData(writer, context);
    byte serializeVersion = 4; …
Run Code Online (Sandbox Code Playgroud)

versioning binary serialization json

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

如何在自定义控件中启用设计支持?

我会试着解释一下我的追求.我不知道它的技术术语,所以这里是:

示例1:如果我在表单上放置ListView并添加一些列,我可以在"设计时"中单击并拖动列以调整它们的大小.

示例2:现在,我将ListView放在UserControl中并将其命名为"MyCustomListView"(并且可能添加一些方法来以某种方式增强它).

如果我知道在表单上放置"MyCustomListView",我无法单击并拖动列标题以在"设计时"中调整它们的大小.

有没有办法轻松实现这一目标?某种形式的"将点击并拖动事件传递给底层控件并让该控件发挥其魔力".我不是真的想要重新编码,只需传递鼠标点击(或其他任何东西)并让,在这种情况下,ListView会像上面第一个例子中那样做出反应.

c# user-controls

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

用Jackson反序列化JSON - 为什么JsonMappingException"没有合适的构造函数"?

我在使用Jackson反序列化JSON字符串时遇到问题(但我将对象序列化为JSON没有问题).

下面我介绍我使用的课程.当我接收一个JSON字符串(一个在其他地方序列化并通过webservice检索的ProtocolContainer)并希望对其进行反序列化时,问题就出现了:

JSON字符串:

{ "DataPacketJSONString":NULL, "DataPacketType": "MyPackage.DataPackets.LoginRequestReply", "的MessageId":6604, "SenderUsername":NULL, "子分组":{ "__类型": "LoginRequestReply:#MyPackage.DataPackets","原因":"错误的传递或用户名","成功":false,"用户名":"用户1"}}

我试着像这样反序列化:

ProtocolContainer ret = ProtocolContainer.Create(jsonString);
Run Code Online (Sandbox Code Playgroud)

并且可以在下面看到在ProtocolContainer中执行的代码.例外:

org.codehaus.jackson.map.JsonMappingException:找不到类型[simple type,class MyPackage.ProtocolContainer]的合​​适构造函数:无法在[Source:java.io.]中从JSON对象实例化(需要添加/启用类型信息?). StringReader @ 4059dcb0; line:1,column:2]

我真的很感激这里的一些输入=)Thx!

ProtocolContainer.java - 封装我的"SubPackets"的容器类:

import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import MyPackage.DataPackets.*;

public class ProtocolContainer 
{
    public String SenderUsername;
    public String DataPacketType;
    public long MessageId;
    public String DataPacketJSONString;
    public DataPacket SubPacket;

    public ProtocolContainer(DataPacket dp)
    {
        DataPacketType = dp.getClass().toString().substring(6);
        SubPacket = dp;
    }

    public String toJSON()
    {
        try {
            if (SubPacket != …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

覆盖主页按钮 - 如何摆脱选择?

创建一个Intent以便MyActivity对用户做出反应时,使用XML标记很容易按下Home键.

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
Run Code Online (Sandbox Code Playgroud)

我想知道如何避免在主屏幕上选择"你想要使用什么活动"?HTC已经使其"Touch Flo"(Sense)覆盖默认的"开始"活动,如果我想通常使用"开始"或"TouchFlo",我永远不会得到问题.但是,当我添加自己的Activity时,我总能得到问题.

是的,我知道我可以检查"将其作为标准使用" - 检查框,但这不是我现在想要的.所以,问题是:我可以使系统覆盖其他所有内容并始终使用MyActivity作为默认值吗?

接下来,我真的只想在我的应用程序运行时覆盖正常的主屏幕.如果它没有运行,一切都应该正常工作,即MyActivity不应该与Home按钮相关联.

任何想法都会很棒.

android

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