如何删除应用程序的SharedPreferences数据?
我正在创建一个使用大量Web服务来同步数据的应用程序.出于测试目的,我需要在重新启动应用程序时清除一些SharedPreferences值.
我想创建一个类似下图的形状:

注意从颜色1到颜色2的上半部分渐变,但是从颜色3到颜色4渐变的下半部分.我知道如何使用单个渐变制作形状,但我不确定如何将形状分割成两半,并制作1个形状,2个不同的渐变.
有任何想法吗?
我有一个Activity带EditText,一个按钮和一个ListView.目的是在中键入搜索屏幕EditText,按下按钮并使搜索结果填充此列表.
这一切都很完美,但虚拟键盘表现得很奇怪.
如果我点击EditText,我会得到虚拟键盘.如果我单击虚拟键盘上的"完成"按钮,它就会消失.但是,如果在单击虚拟键盘上的"完成"之前单击我的搜索按钮,则虚拟键盘会停留,我无法摆脱它.单击"完成"按钮不会关闭键盘.它将"完成"按钮从"完成"更改为箭头并保持可见.
谢谢你的帮助
我有一个搜索屏幕,可以通过点击另一个屏幕的"名称"字段启动.
如果用户遵循此工作流程,我会在Intent的Extras中添加一个名为"search"的额外内容.此额外使用填充"name"字段的文本作为其值.创建搜索屏幕时,该额外用作搜索参数,并为用户自动启动搜索.
但是,由于Android会在屏幕旋转时销毁并重新创建活动,因此旋转手机会再次导致自动搜索.因此,我想在执行初始搜索时从Activity的Intent中删除"搜索"额外内容.
我试过这样做:
Bundle extras = getIntent().getExtras();
if (extras != null) {
if (extras.containsKey("search")) {
mFilter.setText(extras.getString("search"));
launchSearchThread(true);
extras.remove("search");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.如果我再次旋转屏幕,活动的意图的额外内容中仍然存在额外的"搜索".
有任何想法吗?
我有一个ListView与不同的项目不同的布局.有些项目是分隔符.有些项目不同,因为它们包含不同类型的数据等.
我想实现ViewHolders来加速getView进程,但我不太清楚如何去做.不同的布局具有不同的数据(这使得命名困难)和我想要使用的不同数量的视图.
我应该怎么做呢?
我能想出的最好的想法是创建一个带X项的通用ViewHolder,其中X是项目布局中具有最多数量的视图数.对于具有少量视图的其他视图,我将在ViewHolder中使用这些变量的子部分.所以说我有2个布局我用于2个不同的项目.一个有3个TextViews,另一个有1.我会创建一个带有3个TextView变量的ViewHolder,并且只使用其中一个用于我的其他项目.我的问题是,这可能会变得非常难看,感觉非常黑客; 特别是当项目布局可能有许多不同类型的视图时.
这是一个非常基本的getView:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHolder holder;
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.layout_mylistlist_item, parent, false);
holder = new MyHolder();
holder.text = (TextView) v.findViewById(R.id.mylist_itemname);
v.setTag(holder);
}
else {
holder = (MyHolder)v.getTag();
}
MyListItem myItem = m_items.get(position);
// set up the list item
if (myItem != null) {
// set item text
if (holder.text != null) {
holder.text.setText(myItem.getItemName());
}
}
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用HttpDelete对象来调用Web服务的delete方法.Web服务的代码从消息的正文中解析JSON.但是,我无法理解如何向HttpDelete对象添加主体.有没有办法做到这一点?
使用HttpPut和HttpPost,我调用setEntity方法并传入我的JSON.HttpDelete似乎没有任何此类方法.
如果无法为HttpDelete对象设置主体,请将我链接到使用超类HttpDelete的资源,以便我可以设置方法(删除)并设置主体.我知道这不太理想,但此时我无法改变网络服务.
我遵循了使用Android构建数据库的标准教程.我创建了一个名为DbHelper的类,它扩展了SQLiteOpenHelper.我已重写创建处理程序以执行字符串.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DbDefinitions.DB_CREATE);
}
Run Code Online (Sandbox Code Playgroud)
DbDefinitions.DB_CREATE是我创建的静态String.
public static final String TABLE_MESSAGES = "messages";
public static final String TABLE_FRIENDS = "friends";
public static final String STATE_OK = "STATE_OK";
public static final String DB_CREATE =
"create table " + TABLE_MESSAGES + " (_id integer primary key, user_id integer not null, created_on integer, subject text not null, summary text not null, messagetext text null, read integer not null, status text not null default '" + STATE_OK + "'); " …Run Code Online (Sandbox Code Playgroud) 我有一个ListView地方,我在一个单独的XML文件中定义了每个项目的布局.在这个文件中,我包含了一个RatingBar和一个EditText.
我已经以编程方式创建了7-8个项目ListView.当我滚动它们时,它似乎是非常错误的.这里有些例子:
如果我将焦点设置到EditText第一行然后向下滚动,则其他行中的ListView随机EditTexts将具有焦点.似乎是EditText在焦点消失后的下一个消失得到了焦点.也许这是故意的,但是,作为一个用户,它似乎很奇怪.
如果我将焦点设置为a EditText,接收虚拟键盘,键入内容,然后单击虚拟键盘上的"完成"按钮,EditText一旦虚拟键盘消失,它将清空.
有时,当我点击一个EditText,接收一个虚拟键盘并开始输入字母时,一旦我输入它们,这些字母就会消失.
当我点击一个EditText,虚拟键盘显示自己,但EditText失去焦点,我必须EditText再次点击.
尽管我已经设置了RatingBar到focusable="false",如果我将我的滚轮,它仍然抓住重点.
我的一个问题是,当我在虚拟键盘中键入一个字符时,所有可见的列表项都会重新绘制(并且由于文本EditText被设置为某些数据,这是空的,它会被清除.我不明白为什么Android会每次键入一个字符时都决定重新绘制列表.
这是我用来绘制它们的XML.它们是白色气泡,带有灰色边框,还有一些文字,一个RatingBar和一个EditText内部:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="15dip"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_outer">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_inner">
<TextView
android:id="@+id/rating_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/dark_gray"
android:textStyle="bold"
android:layout_marginBottom="10dip" />
<RatingBar …Run Code Online (Sandbox Code Playgroud) 我有一个字符串数组我正在填充一个Spinner对象.但是,我想在Spinner的每个元素上附加一个ID,所以当用户选择一个项目时,我会将其ID用于保存到其他一些数据.我怎样才能做到这一点?
我一直在将我的源码推送到Mercurial存储库.今天我需要删除我的本地副本并重新克隆.我这样做只需将我的本地副本移动到其他地方(以防万一)并输入"hg clone url".
这部分工作得很好.
但是,当我尝试将新克隆的本地副本拉入Eclipse时,我收到以下错误:
/Users/Andrew/Dev/Workspace/Android/MyProject overlaps the location of another project: 'MyProject'
Run Code Online (Sandbox Code Playgroud)
我的猜测是我一直在提交一些我不应该拥有的元文件.有没有人有任何想法?这是我的.hgignore:
syntax: regexp
\.DS_Store
.swo
.swp
.metadata/
/bin/
Run Code Online (Sandbox Code Playgroud)
注意:看起来我的hgignore没有阻止gen文件夹.这可能是问题的一部分吗?
android ×9
listview ×2
database ×1
eclipse ×1
gradient ×1
http-delete ×1
httpclient ×1
listactivity ×1
listviewitem ×1
mercurial ×1
shapes ×1
spinner ×1
sqlite ×1