是ActivityGroup 的BUG?是对机制理解不深刻?还是逻辑错误?还是。。。不知道了? 推荐
2010-09-27 11:03
531 查看
首先,先喷一下张艺谋的片子,你他妈太黑了~!什么史上最干净的爱情片,我说是史上最烂的爱情片,只能把无知当纯情。拍电影拍得一点诚意都没有,只会抄韩国的爱情片,记得有一部韩国片跟你这部剧情都差不多~!你就使劲抄吧~!!浪费我160大洋,进去睡觉。
喷到这里。
这一两天碰到一个问题,是一个关于ActivityGroup 的问题,因为项目需要,必须把一个自定义的PreferenceActivity 的界面嵌套在ActivityGroup 里面,可是当我嵌套在里面的时候发现了一个问题。就是PreferenceActivity 的元素不会自动更新UI,这是比较致命的,不知道为什么会出现这个问题。
查了很久,首先我怀疑是我的自定义preference写的有问题,改了一遍,然后再运行还是一样。
单独运行该 preferenceActivity 试了一下,界面可以按照自己的需求更新UI,那就是说不是我这个自定义的preference 的逻辑问题?这点还不敢确定。
那么我怀疑是 ActivityGroup 不允许底下Activity 元素的UI自动更新,那么新建一个普通的Activity 来试试,在这普通的Activity 里面只有一个按钮同样是点击之后弹出对话框然后改变按钮的字,试了一下,。更新成功。。。耶?那么说ActivityGroup 还是允许底下Activity UI 元素更新的?那么问题出在哪呢?
我又再调试跟踪了代码,确定有执行settext的代码?那是不是说preferenceActivity 和ActivityGroup有冲突?不知道所然,下面贴出我碰到问题的全部代码,由于在公司有加密软件无法将DEMO提供给大家,大家可以根据代码新建一个工程,一起来研究这个问题。
自定义的PreferenceScreenExt 源码:
package asai.cn.seekbardemo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class PreferenceScreenExt extends PreferenceGroup implements
OnItemClickListener, DialogInterface.OnDismissListener {
private Dialog dialog;
private TextView title, summary;
private SharedPreferences share;
private RelativeLayout area;
private ListView listView;
List<Preference> list;
private List<HashMap<String, String>> listStr;
private CharSequence[] mEntries;
private String mValue;
private SimpleAdapter simple;
public PreferenceScreenExt(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.preferenceScreenStyle);
// TODO Auto-generated constructor stub
}
public PreferenceScreenExt(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, android.R.attr.preferenceScreenStyle);
// TODO Auto-generated constructor stub
int resouceId = attrs.getAttributeResourceValue(null, "Entries", 0);
if (resouceId > 0) {
mEntries = getContext().getResources().getTextArray(resouceId);
}
}
@Override
protected View onCreateView(ViewGroup parent) {
// TODO Auto-generated method stu
View view = LayoutInflater.from(getContext()).inflate(
R.layout.preference_screen, null);
area = (RelativeLayout) view.findViewById(R.id.area);
share = getPreferenceManager().getSharedPreferences();
title = (TextView) view.findViewById(R.id.title);
summary = (TextView) view.findViewById(R.id.summary);
title.setText(getTitle());
summary.setText(share.getString(getKey(), getSummary() == null ? ""
: getSummary().toString()));
area.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog();
}
});
return view;
}
public void bindView(ListView listview) {
int length = mEntries.length;
int i = 0;
listStr = new ArrayList<HashMap<String, String>>();
for (i = 0; i < length; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("keyname", mEntries[i].toString());
listStr.add(map);
}
simple = new SimpleAdapter(getContext(), listStr, R.layout.dialog_view,
new String[] { "keyname" }, new int[] { R.id.text });
listview.setAdapter(simple);
listview.setOnItemClickListener(this);
}
public void showDialog() {
listView = new ListView(getContext());
bindView(listView);
dialog = new Dialog(getContext(), android.R.style.Theme_NoTitleBar);
dialog.setContentView(listView);
dialog.setOnDismissListener(this);
dialog.show();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
mValue = listStr.get(position).get("keyname").toString();
SharedPreferences.Editor editor = getEditor();
editor.putString(getKey(), mValue);
callChangeListener(mValue);
PreferenceScreenExt.this
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
// TODO Auto-generated method stub
if (temp != null) {
temp.onPreferenceChange(PreferenceScreenExt.this,
newValue);
}
return true;
}
});
editor.commit();
dialog.dismiss();
}
@Override
public void onDismiss(DialogInterface dialog) {
// TODO Auto-generated method stub
}
private OnPreferenceChangeListener temp;
public interface OnPreferenceChangeListener {
public boolean onPreferenceChange(Preference preference, Object newValue);
}
public void setOnPreferenceChangeListener(
OnPreferenceChangeListener preference) {
this.temp = preference;
}
public void setValue(String value) {
summary.setText(value);
persistString(value);
}
}
对应的XML布局文件:
dialog_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="center"
android:layout_height="fill_parent" >
<TextView android:id="@+id/text" android:layout_marginLeft="20dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="35sp" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
preference_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/area" android:gravity="center_vertical"
android:layout_marginTop="5px" android:clickable="true"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/title" android:layout_marginLeft="20dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="35sp" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView android:id="@+id/summary"
android:layout_marginRight="20dp" android:textSize="35sp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_alignParentRight="true" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</RelativeLayout>
XML文件夹下的XML文件:
preference.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<asai.cn.seekbardemo.PreferenceScreenExt
Entries="@array/country" android:title="收音区域" android:summary="美国"
android:persistent="true" android:key="eeg">
</asai.cn.seekbardemo.PreferenceScreenExt>
</PreferenceScreen>
main.java 对应代码
package asai.cn.seekbardemo;
import android.app.ActivityGroup;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
public class main extends ActivityGroup implements OnClickListener {
private LocalActivityManager lm;
private LinearLayout layout;
private Button btn, btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.group);
lm = getLocalActivityManager();
btn = (Button) findViewById(R.id.Button01);
btn2 = (Button) findViewById(R.id.Button02);
btn.setOnClickListener(this);
btn2.setOnClickListener(this);
layout = (LinearLayout) findViewById(R.id.layout);
Intent intent = new Intent(this, seekBarDemo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Window w = lm.startActivity("test", intent);
View v = w.getDecorView();
layout.removeAllViews();
layout.addView(v);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.Button01:
Intent intent = new Intent(this, seekBarDemo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window w = lm.startActivity("test", intent);
View view = w.getDecorView();
layout.removeAllViews();
layout.addView(view);
break;
case R.id.Button02:
Intent in = new Intent(this, test.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window win = lm.startActivity("ww", in);
View vw = win.getDecorView();
layout.removeAllViews();
layout.addView(vw);
break;
default:
break;
}
}
}
对应的XML布局文件:
group.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:layout_width="fill_parent"
android:gravity="center_horizontal" android:layout_height="wrap_content">
<Button android:text="preference界面" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="普通" android:id="@+id/Button02"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
<LinearLayout android:id="@+id/layout"
android:layout_width="fill_parent" android:layout_height="wrap_content"></LinearLayout>
</LinearLayout>
PreferenceActivity 界面代码 SeekBarDemo.java:
package asai.cn.seekbardemo;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;
import android.widget.TextView;
public class seekBarDemo extends PreferenceActivity {
private Preference eeg;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
final PreferenceScreenExt pre = (PreferenceScreenExt) findPreference("eeg");
pre.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
// TODO Auto-generated method stub
pre.setValue(String.valueOf(newValue));
return true;
}
});
}
}
普通的Activity 界面代码test.java:
package asai.cn.seekbardemo;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class test extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
final Button btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(test.this).setMessage("修改").setTitle(
"提示").setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
btn.setText("修改后的按钮");
}
}).show();
}
});
}
}
配置文件:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="asai.cn.seekbardemo" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".main" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".test" android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".seekBarDemo" android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
希望就此问题和大家探讨一下。
喷到这里。
这一两天碰到一个问题,是一个关于ActivityGroup 的问题,因为项目需要,必须把一个自定义的PreferenceActivity 的界面嵌套在ActivityGroup 里面,可是当我嵌套在里面的时候发现了一个问题。就是PreferenceActivity 的元素不会自动更新UI,这是比较致命的,不知道为什么会出现这个问题。
查了很久,首先我怀疑是我的自定义preference写的有问题,改了一遍,然后再运行还是一样。
单独运行该 preferenceActivity 试了一下,界面可以按照自己的需求更新UI,那就是说不是我这个自定义的preference 的逻辑问题?这点还不敢确定。
那么我怀疑是 ActivityGroup 不允许底下Activity 元素的UI自动更新,那么新建一个普通的Activity 来试试,在这普通的Activity 里面只有一个按钮同样是点击之后弹出对话框然后改变按钮的字,试了一下,。更新成功。。。耶?那么说ActivityGroup 还是允许底下Activity UI 元素更新的?那么问题出在哪呢?
我又再调试跟踪了代码,确定有执行settext的代码?那是不是说preferenceActivity 和ActivityGroup有冲突?不知道所然,下面贴出我碰到问题的全部代码,由于在公司有加密软件无法将DEMO提供给大家,大家可以根据代码新建一个工程,一起来研究这个问题。
自定义的PreferenceScreenExt 源码:
package asai.cn.seekbardemo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class PreferenceScreenExt extends PreferenceGroup implements
OnItemClickListener, DialogInterface.OnDismissListener {
private Dialog dialog;
private TextView title, summary;
private SharedPreferences share;
private RelativeLayout area;
private ListView listView;
List<Preference> list;
private List<HashMap<String, String>> listStr;
private CharSequence[] mEntries;
private String mValue;
private SimpleAdapter simple;
public PreferenceScreenExt(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.preferenceScreenStyle);
// TODO Auto-generated constructor stub
}
public PreferenceScreenExt(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, android.R.attr.preferenceScreenStyle);
// TODO Auto-generated constructor stub
int resouceId = attrs.getAttributeResourceValue(null, "Entries", 0);
if (resouceId > 0) {
mEntries = getContext().getResources().getTextArray(resouceId);
}
}
@Override
protected View onCreateView(ViewGroup parent) {
// TODO Auto-generated method stu
View view = LayoutInflater.from(getContext()).inflate(
R.layout.preference_screen, null);
area = (RelativeLayout) view.findViewById(R.id.area);
share = getPreferenceManager().getSharedPreferences();
title = (TextView) view.findViewById(R.id.title);
summary = (TextView) view.findViewById(R.id.summary);
title.setText(getTitle());
summary.setText(share.getString(getKey(), getSummary() == null ? ""
: getSummary().toString()));
area.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog();
}
});
return view;
}
public void bindView(ListView listview) {
int length = mEntries.length;
int i = 0;
listStr = new ArrayList<HashMap<String, String>>();
for (i = 0; i < length; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("keyname", mEntries[i].toString());
listStr.add(map);
}
simple = new SimpleAdapter(getContext(), listStr, R.layout.dialog_view,
new String[] { "keyname" }, new int[] { R.id.text });
listview.setAdapter(simple);
listview.setOnItemClickListener(this);
}
public void showDialog() {
listView = new ListView(getContext());
bindView(listView);
dialog = new Dialog(getContext(), android.R.style.Theme_NoTitleBar);
dialog.setContentView(listView);
dialog.setOnDismissListener(this);
dialog.show();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
mValue = listStr.get(position).get("keyname").toString();
SharedPreferences.Editor editor = getEditor();
editor.putString(getKey(), mValue);
callChangeListener(mValue);
PreferenceScreenExt.this
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
// TODO Auto-generated method stub
if (temp != null) {
temp.onPreferenceChange(PreferenceScreenExt.this,
newValue);
}
return true;
}
});
editor.commit();
dialog.dismiss();
}
@Override
public void onDismiss(DialogInterface dialog) {
// TODO Auto-generated method stub
}
private OnPreferenceChangeListener temp;
public interface OnPreferenceChangeListener {
public boolean onPreferenceChange(Preference preference, Object newValue);
}
public void setOnPreferenceChangeListener(
OnPreferenceChangeListener preference) {
this.temp = preference;
}
public void setValue(String value) {
summary.setText(value);
persistString(value);
}
}
对应的XML布局文件:
dialog_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="center"
android:layout_height="fill_parent" >
<TextView android:id="@+id/text" android:layout_marginLeft="20dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="35sp" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
preference_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/area" android:gravity="center_vertical"
android:layout_marginTop="5px" android:clickable="true"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/title" android:layout_marginLeft="20dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="35sp" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
<TextView android:id="@+id/summary"
android:layout_marginRight="20dp" android:textSize="35sp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_alignParentRight="true" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</RelativeLayout>
XML文件夹下的XML文件:
preference.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<asai.cn.seekbardemo.PreferenceScreenExt
Entries="@array/country" android:title="收音区域" android:summary="美国"
android:persistent="true" android:key="eeg">
</asai.cn.seekbardemo.PreferenceScreenExt>
</PreferenceScreen>
main.java 对应代码
package asai.cn.seekbardemo;
import android.app.ActivityGroup;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
public class main extends ActivityGroup implements OnClickListener {
private LocalActivityManager lm;
private LinearLayout layout;
private Button btn, btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.group);
lm = getLocalActivityManager();
btn = (Button) findViewById(R.id.Button01);
btn2 = (Button) findViewById(R.id.Button02);
btn.setOnClickListener(this);
btn2.setOnClickListener(this);
layout = (LinearLayout) findViewById(R.id.layout);
Intent intent = new Intent(this, seekBarDemo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Window w = lm.startActivity("test", intent);
View v = w.getDecorView();
layout.removeAllViews();
layout.addView(v);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.Button01:
Intent intent = new Intent(this, seekBarDemo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window w = lm.startActivity("test", intent);
View view = w.getDecorView();
layout.removeAllViews();
layout.addView(view);
break;
case R.id.Button02:
Intent in = new Intent(this, test.class);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window win = lm.startActivity("ww", in);
View vw = win.getDecorView();
layout.removeAllViews();
layout.addView(vw);
break;
default:
break;
}
}
}
对应的XML布局文件:
group.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:layout_width="fill_parent"
android:gravity="center_horizontal" android:layout_height="wrap_content">
<Button android:text="preference界面" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="普通" android:id="@+id/Button02"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
<LinearLayout android:id="@+id/layout"
android:layout_width="fill_parent" android:layout_height="wrap_content"></LinearLayout>
</LinearLayout>
PreferenceActivity 界面代码 SeekBarDemo.java:
package asai.cn.seekbardemo;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;
import android.widget.TextView;
public class seekBarDemo extends PreferenceActivity {
private Preference eeg;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
final PreferenceScreenExt pre = (PreferenceScreenExt) findPreference("eeg");
pre.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
// TODO Auto-generated method stub
pre.setValue(String.valueOf(newValue));
return true;
}
});
}
}
普通的Activity 界面代码test.java:
package asai.cn.seekbardemo;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class test extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
final Button btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(test.this).setMessage("修改").setTitle(
"提示").setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
btn.setText("修改后的按钮");
}
}).show();
}
});
}
}
配置文件:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="asai.cn.seekbardemo" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".main" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".test" android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".seekBarDemo" android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
希望就此问题和大家探讨一下。
相关文章推荐
- 是ActivityGroup 的BUG?是对机制理解不深刻?还是逻辑错误?还是。。。不知道了?
- 记录一个bug,逻辑错误,结果正确,异步代码调试及IE下的渲染机制
- 深刻理解HDFS工作机制
- Hadoop系列-深刻理解HDFS工作机制(五)
- 深刻理解HDFS工作机制
- 不知道这是FreeTextBox还是五笔加加的bug
- 对于RAC心跳以及仲裁机制的理解 推荐
- 深刻理解HDFS工作机制
- 奇怪的正则表达式!不知道是bug,还是我有所不知。
- 不知道是bug还是什么原因?请路过大神搭把手
- 不知道是不是VS的bug还是MSI的bug!!VS2003.net打包安装程序的怪现象
- cmd 命令行界面的经典 小秘诀(不知道是故意设计,还是BUG)
- Node.js--异步机制下保证逻辑顺序的一些理解
- 利用bochs将逻辑地址转化为物理地址理解操作系统的分段分页机制
- 教你深刻理解Runtime机制
- Java的异常处理机制的一个例子-读后定能对异常理解深刻
- 给.NET初学者推荐的一篇文章(图文并茂,理解深刻) - .NET中六个重要的概念:堆栈,堆,值类型,引用类型,装箱和拆箱
- 理解并取证:以太通道的动态协商机制的工作原理 推荐
- 深刻理解Java虚拟机及垃圾回收机制,值得一看的干货!
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)