我有一个我正在开始研究的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
我希望我已经不够清楚,我不是要求太多,我只是想确保我的应用程序的结构,在我的代码将变成面条怪物.
谢谢!
如果我以这种方式在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.建成后我得到了图像文件.但是当我输入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
我正在尝试获取微调器的位置(数字),当选择在另一个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应用程序.该应用程序在一个屏幕中崩溃,应用程序退出.当我再次启动应用程序时,我需要通过检查初始活动onCreate()方法中的某些条件来启动另一个屏幕.我们可以使用首选项或SQLite来做到这一点吗?
我正在尝试使用adb pull命令将某些文件(jpg)复制到我的macbook.我试过"adb pull sdcard/mydir/*.jpg",但它显然没有解释通配符.我怎样才能获得仅复制的jpg文件?如果有帮助的话我已经扎根了手机.
即使手机没有醒来,我的应用也需要定期修复定位.为此,我使用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子类: …
我在创建虚拟设备时遇到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 SDK工具更新为17 rev.我更新了SDK工具,但在属性/库中;
但事实上,在support文件夹中已经存在annotations.jar.我该怎么做才能解决这个问题?
好吧,我正在做一些我想要禁用设备的所有硬按钮的东西.
电源,家庭,音量增大,音量减小,搜索,返回等硬按钮.
我已经成功覆盖几乎所有的按钮,在这里除了电源.
所以我只是希望你们有人看到并请分享一些想法,这样我就能把它拿走.
我正在进行长按 Power keyevent onDispatchKeyEvent(),就像我想抓住同样的短按一样.此外压迫力的时候我还试图阻止屏幕关闭通过获取Broadcast的SCREEN_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 ×10
adb ×1
annotations ×1
architecture ×1
fastboot ×1
home-button ×1
install ×1
mvvm ×1
overriding ×1
revision ×1
textview ×1