标签: android

Android应用程序架构 - MVVM还是MVC?

我有一个我正在开始研究的android项目,我希望它的结构尽可能健壮.

我来自WPF MVVM背景,我一直在阅读有关Android应用程序架构的一些内容,但我无法找到关于我应该使用哪种架构的明确答案.

有人建议使用MVVM - http://vladnevzorov.com/2011/04/30/android-application-architecture-part-ii-architectural-styles-and-patterns/

和其他人建议使用MVC,但没有具体说明应该如何实现.

正如我所说,我来自WPF-MVVM背景,因此我知道它在很大程度上依赖于绑定,据我所知,Android中默认不支持绑定.

似乎有第三方解决方案 - http://code.google.com/p/android-binding/ 但我不知道我是否愿意依赖它.如果它的开发会停止并且未来的API等不支持它会怎么样?

基本上我正在寻找的是一个全面的教程,它将教会我构建应用程序结构的最佳实践.文件夹和类结构等我找不到任何全面的教程,我本以为Google会为其开发人员提供这样的教程.我只是不认为这种文档处理技术方面足够好 - http://developer.android.com/guide/topics/fundamentals.html

我希望我已经不够清楚,我不是要求太多,我只是想确保我的应用程序的结构,在我的代码将变成面条怪物.

谢谢!

architecture model-view-controller android mvvm

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

如何从textview获取文本

如果我以这种方式在textview中设置文本,这不是问题:

  tv.setText("" + ANS[i]);
Run Code Online (Sandbox Code Playgroud)

这简直就是这样.

     String a = tv.getText().toString();
     int A = Integer.parseInt(a);
Run Code Online (Sandbox Code Playgroud)

但是在textView中设置值的情况下.

 tv1.setText("  " + X[i] + "\n" + "+" + " " + Y[i]);
Run Code Online (Sandbox Code Playgroud)

这是这样的

              5
             +9
Run Code Online (Sandbox Code Playgroud)

我有问题,这个值怎么弄.

android textview

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

Android Fastboot设备无法返回设备

目前我想在我的设备(自定义硬件设备)上重新安装Android.建成后我得到了图像文件.但是当我输入fastboot devices什么都没有回报.

adb devices工作中.它返回我的设备.fastboot flashall -w也没有用.我回来<waiting for devices>并保持这样,直到我退出.

所以70-android.rules.d文件是对的.我还设置了ANDROID_PRODUCT_OUT.But someone knows why fastboot does not see my device, but adb does?

重新启动udev或adb不起作用.有人建议在互联网上.

操作系统:Ubuntu 11.10

android install fastboot

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

获取Android中微调器的位置

我正在尝试获取微调器的位置(数字),当选择在另一个Activity中使用它时,每次将根据所选项目显示不同的地图.当我运行应用程序时它崩溃了.这是第一个活动代码:

public class TestProjectActivity extends Activity {
    public Spinner spinner1;
    public Integer number;
    private Button valideButton;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MySpinner();
        valide_button();

    }

    public void MySpinner() {

        final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.num, android.R.layout.simple_spinner_item);
                                      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter);

        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parentView,
                    View selectedItemView, int position, long id) {
                // Object item = parentView.getItemAtPosition(position);

                TestProjectActivity.this.number = spinner1
                        .getSelectedItemPosition() + 1;

            }

            public void onNothingSelected(AdapterView<?> arg0) {// do nothing
            }

        }); …
Run Code Online (Sandbox Code Playgroud)

android android-spinner

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

如何在Android上保存应用程序状态

可能重复:
如何保存Android应用程序的状态?

我有一个Android应用程序.该应用程序在一个屏幕中崩溃,应用程序退出.当我再次启动应用程序时,我需要通过检查初始活动onCreate()方法中的某些条件来启动另一个屏幕.我们可以使用首选项或SQLite来做到这一点吗?

android

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

如何使用adb pull从Android复制所选文件

我正在尝试使用adb pull命令将某些文件(jpg)复制到我的macbook.我试过"adb pull sdcard/mydir/*.jpg",但它显然没有解释通配符.我怎样才能获得仅复制的jpg文件?如果有帮助的话我已经扎根了手机.

android adb

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

从IntentService获取位置时,在死线程上向Handler发送消息

即使手机没有醒来,我的应用也需要定期修复定位.为此,我使用IntentService和Commonsware慷慨提供的模式. https://github.com/commonsguy/cwac-wakeful

为了获得位置修复,我依赖于一个名为Fedor的成员提供的以下代码. 在Android上获取用户当前位置的最简单,最强大的方法是什么?.我稍微修改它以返回null而不是获取最后的已知位置

它们在没有组合时都能很好地工作:我可以在一个Activity中从Fedor的类中获得一个位置修复,我可以使用Commonsware类做一些基本的东西(比如记录一些东西).

当我试图从Commonsware的WakefulIntentService子类获取位置修复时,会出现问题.LocationListeners没有对locationUpdates做出反应,我得到了这些警告(我还没有得到线程,处理程序......的细微之处).有人可以帮我理解问题所在吗?谢谢,祝大家新年快乐:)

12-31 14:09:33.664: W/MessageQueue(3264): Handler (android.location.LocationManager$ListenerTransport$1) {41403330} sending message to a      Handler on a dead thread
12-31 14:09:33.664: W/MessageQueue(3264): java.lang.RuntimeException: Handler (android.location.LocationManager$ListenerTransport$1) {41403330} sending message to a Handler on a dead thread
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:196)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessageAtTime(Handler.java:473)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessageDelayed(Handler.java:446)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessage(Handler.java:383)
12-31 14:09:33.664: W/MessageQueue(3264): at android.location.LocationManager$ListenerTransport.onLocationChanged(LocationManager.java:193)
12-31 14:09:33.664: W/MessageQueue(3264): at android.location.ILocationListener$Stub.onTransact(ILocationListener.java:58)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Binder.execTransact(Binder.java:338)
12-31 14:09:33.664: W/MessageQueue(3264): at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

这是我的WakefulIntentService子类: …

android commonsware-cwac

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

创建Android虚拟设备时没有ABI错误

我在创建虚拟设备时遇到No ABI错误.我的设置包括

Android SDK

ADT插件

日食

我跑的时候

 android list targets
Run Code Online (Sandbox Code Playgroud)

它给了我

  Name: Android 4.0.3
  Type: Platform
  API level: 15
  Revision: 2
  Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720,
  WXGA800
 ABIs : no ABIs.
Run Code Online (Sandbox Code Playgroud)

当我试图跑

  android create avd -n myandroid -t 1
Run Code Online (Sandbox Code Playgroud)

它给

  This platform has more than one ABI. Please specify one using --abi.
Run Code Online (Sandbox Code Playgroud)

如何指定ABI并因此创建AVD

android android-emulator

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

缺少annotations.jar

我正在尝试将我的Android SDK工具更新为17 rev.我更新了SDK工具,但在属性/库中;在此输入图像描述

但事实上,在support文件夹中已经存在annotations.jar.我该怎么做才能解决这个问题?

android revision annotations

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

像主页按钮一样覆盖电源按钮

好吧,我正在做一些我想要禁用设备的所有硬按钮的东西.

电源,家庭,音量增大,音量减小,搜索,返回等硬按钮.

我已经成功覆盖几乎所有的按钮,在这里除了电源.

所以我只是希望你们有人看到并请分享一些想法,这样我就能把它拿走.

我正在进行长按 Power keyevent onDispatchKeyEvent(),就像我想抓住同样的短按一样.此外压迫力的时候我还试图阻止屏幕关闭通过获取BroadcastSCREEN_OFF,我成功地接受它,但我不能处理它.

谢谢.

然后,我创建了一个ReceiverScreen,它接收/关闭Screen的广播

ReceiverScreen.java

public class ReceiverScreen extends BroadcastReceiver {

    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // do whatever you need to do here
            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // and do whatever you need to do here
            wasScreenOn = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

DisableHardButton.java

public class DisableHardButton extends …
Run Code Online (Sandbox Code Playgroud)

android overriding home-button

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