我遵循http://www.sqlite.org/foreignkeys.html上的SQLite文档中的说明,但是我添加外键的尝试失败了.这是我的创建语句:
CREATE TABLE
checklist (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
checklist_title TEXT,
description TEXT,
created_on INTEGER,
modified_on INTEGER
);
CREATE TABLE
item (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
FOREIGN KEY(checklist_id) REFERENCES checklist(_id),
item_text TEXT, item_hint TEXT,
item_order INTEGER,
created_on INTEGER,
modified_on INTEGER
);
Run Code Online (Sandbox Code Playgroud)
第一张表很好.错误发生在第二个语句中.我已经尝试将两个查询包装在一个事务中而没有.这是错误:
未知栏 "checklist_id" 外键的定义(代码1):在编译:CREATE TABLE项目(_id INTEGER PRIMARY KEY AUTOINCREMENT,外键(checklist_id)参考清单(_id),ITEM_TEXT TEXT,item_hint TEXT,item_order INTEGER,created_on INTEGER ,modified_on INTEGER)
我真的有时间搞清楚这个,到目前为止找不到任何有相关经验的朋友.在我发布我的第一个应用程序之前,这是我非常最后的功能,所以它让我疯狂,因为它已经陷入困境,最终即将结束!
如果我将物体放在可接受的区域,我的拖放效果会很好.但是,如果丢弃在其他地方我没有得到事件,并且在失败的拖放操作后无法清理.我需要触发ACTION_DRAG_ENDED事件.但是,如果我使用值为true的ACTION_DRAG_STARTED响应(意味着它可以接受该对象),则仅触发(根据文档).问题是ACTION_DRAG_STARTED没有解雇!
所以我认为问题的关键在于我没有得到ACTION_DRAG_STARTED.我在这里放置了所有相关的拖拽代码(或至少几乎全部):
private OnTouchListener onTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Item current = (Item) ((View) v.getTag()).getTag();
//ClipData data = ClipData.newPlainText("test", "testText");
View dragView = (View) v.getTag();
DragShadowBuilder shadowBuilder = new ItemDragShadowBuilder(dragView,
new Point(v.getWidth()/2, v.getHeight()/2));
dragSource = dragView;
v.startDrag(null, shadowBuilder, current, 0);
dragView.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
};
private static class ItemDragShadowBuilder extends View.DragShadowBuilder {
private Point touchPoint = null;
private Point sizePoint …Run Code Online (Sandbox Code Playgroud) 回到当天,MotoDev Studio(基于Eclipse,由Motorolla推出)具有将XML中的引用提取到代码中的功能.带有ADT的标准Eclipse没有此功能,但想知道它是否可以在Android Studio中使用.
所以例如给定XML:
<Button
android:id="@+id/my_button">
Run Code Online (Sandbox Code Playgroud)
它将在您的活动的类中生成:
private Button mMyButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mMyButton = (Button) findViewById(R.id.my_button);
}
Run Code Online (Sandbox Code Playgroud) gmail应用程序的工具栏看起来类似于操作栏(甚至包括溢出菜单).它是一个蓝色条,大约是屏幕下方的1/4.见图1:
我想要的酒吧用红色箭头指出.我查看了文档,没有看到一个小部件来执行此操作.我怎么能这样做一个吧?
此外,如果您看到下面的橙色箭头,则表明此应用程序顶部和底部都有一个操作栏.我很好奇这是如何完成的,但我的主要问题是如何在屏幕上的任何地方制作类似于动作栏的工具栏.
图1是在电话上.我还包括下面的图像2和图像3,它们分别是7英寸平板电脑和10英寸平板电脑.请注意,"拆分"操作栏位于包含平板电脑视图的单个栏上.


android android-widget android-layout android-xml android-gui
我做了我的研究并缩小了范围.好的,所以我决定用于开发基于云的Android应用程序的后端(服务器端)的语言和工具.我已经决定将Google App Engine作为我的框架.当我要在我的Android平板电脑上开发时,我想要一个基于云的IDE.(我将为客户端使用原生的Android IDE应用程序).
App Engine支持Go编程语言,Java和Python.由于似乎没有一个支持Go的稳定云IDE,我只剩下Java和Python.我把我庞大的IDE列表缩小到:
Coderbuddy - (专为App Engine而设计,仅适用于Python)exo Cloud - (支持Java和Python)Cloud 9 - (支持Java和Python)
我不懂语言.在任何情况下我都必须学习Java以进行Android客户端开发.我知道Python编写代码的速度更快,所以这绝对是一个因素,但我绝对不想牺牲性能或可伸缩性.我将做很多SQL数据库的东西.
最后,如果您认为我离开了,应该向另一个方向看,请告诉我.谢谢!
编辑:我的背景语言是Delphi(Object Pascal)
拖动阴影的默认外观和位置是过去的视图透明且以触摸为中心.我希望它看起来很稳固,视图从你的触摸开始.
我已经下了DragShadowBuilder并覆盖了"onProvideShadowMetrics"和"onDrawShadow".我有我想要的定位,但我不知道如何关闭透明.
这是触摸侦听器,调用创建我的dragShadowBuilder和dragShadowBuilder类:
private OnTouchListener onTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Item current = (Item) ((View) v.getTag()).getTag();
//ClipData data = ClipData.newPlainText("test", "testText");
View dragView = (View) v.getTag();//the on touch view is just the "grid" image. It holds the whole view in it's tag
DragShadowBuilder shadowBuilder = new ItemDragShadowBuilder(dragView,
new Point(v.getWidth()/2, v.getHeight()/2));
v.startDrag(null, shadowBuilder, current, 0);
dragView.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
};
private static …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题,我无法弄清楚,需要一些其他的眼睛来看.我已经动态创建了一个ProgressBar视图,除了我的Motorola Xoom之外,它还适用于各种设备和AVD.
所有屏幕截图都有它们之上的设备名称,并且从它通过ADT获得的任何内容减少了大约50%,除了Nexus 10,因为它的超高分辨率是25%.添加了ProgressBar的红色背景以用于调试目的,以显示视图在那里并且可见.我添加了左边和顶部填充以使其居中.
下面的屏幕截图从Xoom开始,它不起作用,其次是Nexus 10(AVD),Nexus 7,Galaxy Nexus和HTC Droid Incredible,展示它在其他地方工作.拍摄后我会添加我的代码.
进度条不工作!但请注意视图是可见的(我们看到红色背景).

所有这些设备上都可以看到圆圈进度.
模拟三星Nexus 10

华硕Nexus 7

三星Galaxy Nexus

HTC Droid令人难以置信

这将创建包含它的父视图:
RelativeLayout discoverListLayout = new RelativeLayout(mContext);
discoverListLayout.setLayoutParams(params);
discoverListLayout.addView(mDiscoverList);
Run Code Online (Sandbox Code Playgroud)
mDiscoverList是最终显示的列表视图.ProgressBar加载在它之上,直到加载列表.
现在创建并设置进度条.我在onGlobalLayout上设置了填充,因为否则对象的宽度和高度为0.
mDiscoverLoading = new ProgressBar(mContext);
params.height = ViewPager.LayoutParams.WRAP_CONTENT;
params.width = ViewPager.LayoutParams.WRAP_CONTENT;
mDiscoverLoading.setLayoutParams(params);
mDiscoverLoading.setIndeterminate(true);
discoverListLayout.addView(mDiscoverLoading);
ViewTreeObserver vto = mDiscoverLoading.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
if (mDiscoverList.getCount() > 0) {
processLoadedList(true);
} else {
mDiscoverLoading.setBackgroundColor(getActivity().getResources().getColor(R.color.stitchoid_red));
mDiscoverLoading.setPadding((getView().getWidth() / 2) - (mDiscoverLoading.getWidth() / 2),(getView().getHeight() / 2) …Run Code Online (Sandbox Code Playgroud) 我最近在一台新机器上安装了一个新的Eclipse,安装了最新的Android SDK.当我在几个地方带来一个旧项目时,我得到了一个语法错误,关于@Override说"方法suchands这样的类型suchandsuch必须覆盖超类方法".这些项目是通过删除@Override修复的(我认为这是正确的).
我刚刚用我的新设置创建了我的第一个新项目,并且初始未触及的代码正在给出这个让我感到困惑的错误.
package com.geeksonhugs.whenimclose;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.view.MenuItem;
public class ItemListActivity extends FragmentActivity
implements ItemListFragment.Callbacks {
private boolean mTwoPane;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_list);
if (findViewById(R.id.item_detail_container) != null) {
mTwoPane = true;
((ItemListFragment) getSupportFragmentManager()
.findFragmentById(R.id.item_list))
.setActivateOnItemClick(true);
}
}
@Override
public void onItemSelected(String id) {
if (mTwoPane) {
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID, id);
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.item_detail_container, fragment)
.commit();
} else {
Intent …Run Code Online (Sandbox Code Playgroud) 我阅读了关于此的文档,我并不完全清楚.我已经注意了set方法,我想我会像这样重新排序:
list.set(0,myObj);//Move first
list.set(list.indexOf(myObj) - 1, myObj);//Move up
list.set(list.indexOf(myObj) + 1, myObj);//Move down
list.set(list.size() - 1, myObj);//Move last
Run Code Online (Sandbox Code Playgroud)
http://developer.android.com/reference/java/util/List.html上的文档声明set返回被替换的对象.所以这让我认为我必须重新放置那个对象.我对么?因此,在我描述的设置操作之后,我将对列表中的对象进行两次引用.这意味着我必须循环列表以适当地放置所有其他对象?
好吧,我有一个问题,我很困惑,不能正确地问,但这是一个去:
它在Android文档中的某处说明:
注意:Eclipse有时喜欢在使用资源的文件顶部添加"import android.R"语句,尤其是当您要求eclipse对排序或以其他方式管理导入时.这会导致你的品牌破产.注意这些错误的import语句并删除它们.
我以前注意到了这种行为.第一次是一次非常糟糕的经历,因为我无法理解发生了什么.无论如何,每当我注意到导入android.R; 我只是删除它.
我最近的项目使用了最新的SDK,包括Master - Detail Activity向导(创建片段).我注意到在我的ListFragment源文件中导入android.R; 然后删除它打破了它,因为它显然需要android.R在onCreate中使用内置布局"simple_list_item_activated_1"(http://developer.android.com/reference/android/R.layout.html#simple_list_item_activated_1).
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
R.layout.simple_list_item_activated_1,
R.id.text1,
DummyContent.ITEMS));
}
Run Code Online (Sandbox Code Playgroud)
所以我把它添加回去,没关系.问题是android.R包括我看不到任何我定义的XML东西.在我的情况下,我正在尝试使用我在onCreateOptionsMenu中创建的菜单.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
//MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_checklist_list, menu);
R.layout.
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果我不导入android.R然后onCreate是破坏,如果我导入android.R然后onCreateOptionsMenu破了.如果我这样做该死的,如果我不这样做该死的. 哭声
:'(
android ×10
java ×6
android-gui ×2
eclipse ×2
android-xml ×1
cloud ×1
create-table ×1
ide ×1
list ×1
python ×1
sql ×1
sqlite ×1
xml ×1