for(i = 0; i <26; i ++){
btnAlpha[i] = new Button(this);
btnAlpha[i].setBackgroundColor(Color.TRANSPARENT);
btnAlpha[i].setTextColor(Color.GREEN);
btnAlpha[i].setText(Character.toString ((char)(j+i)));
btnAlpha[i].setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
//Want to get the text from the current button.
btnAlpha[i].getText();
//But it gives error that "i" cannot be accessed.
}});
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"不能引用在不同方法中定义的内部类中的非最终变量".但我需要在正确的时间得到文本.怎么做?还有其他办法吗?请帮忙!
我一直在关注这个教程,试图为android制作一个非常简单的时钟小部件.我能够创建小部件,但它似乎没有更新.我发现这很奇怪,因为我的代码似乎与android dev博客的教程基本相同.
当我将小部件添加到主屏幕(Android 2.2模拟器)时,我在logCat中收到以下消息:
I/ActivityManager( 68): Starting activity: Intent { act=android.appwidget.action.APPWIDGET_PICK cmp=com.android.settings/.AppWidgetPickActivity (has extras) }
W/InputManagerService( 68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44fbaf40
I/AppWidgetPickActivity( 135): EXTRA_CUSTOM_INFO not present.
I/ActivityManager( 68): Displayed activity com.android.settings/.AppWidgetPickActivity: 1181 ms (total 1181 ms)
W/ActivityManager( 68): Unable to launch app com.levold.customClockWidget/10036 for broadcast Intent { act=android.appwidget.action.APPWIDGET_ENABLED cmp=com.levold.customClockWidget/.ClockWidget }: process is bad
W/ActivityManager( 68): finishReceiver called but none active
W/ActivityManager( 68): Unable to launch app com.levold.customClockWidget/10036 for broadcast Intent { act=android.appwidget.action.APPWIDGET_UPDATE …Run Code Online (Sandbox Code Playgroud) 我正在使用带有自定义视图的Dialog.该视图的布局为300dp x 300dp,大小并以屏幕为中心.现在我希望当用户触摸对话框外时它被解雇.我想:好极了!有一个函数:setCanceledOnTouchOutside(boolean).但我没有效果.它根本不起作用.我还尝试添加一个onTouchListener并侦听对话框外的事件,但这些事件似乎没有被侦听器捕获:(
任何想法为什么这不起作用或如何以另一种方式完成?
以下是我如何声明对话框:
mMenuDialog = new Dialog(this,
android.R.style.Theme_Translucent_NoTitleBar);
mMenuDialog.setContentView(R.layout.menu_dialog);
mMenuDialog.setCancelable(true);
mMenuDialog.setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)
这是自定义视图的声明
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp" android:layout_height="300dp"
android:background="@drawable/menu_dialog_background"
android:orientation="vertical" android:layout_gravity="center"
android:id="@+id/dialog_root">
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是使用的背景:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<padding android:left="15dp" android:top="15dp" android:right="15dp"
android:bottom="15dp" />
<solid android:color="#f0f0f0" />
<corners android:radius="15dip" />
</shape>
Run Code Online (Sandbox Code Playgroud) 我创建了一个安全应用程序,就像Mcafee wave secure一样.
我的应用程序正在侦听SMS命令并在命令匹配时执行某些操作,因此我创建了一个表单,其中包含另一个用于侦听SMS的服务.
这是主要形式:
public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
ArrayList<String> messageList;
ArrayAdapter< String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//untuk mendisable notification area
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
MainButtonAbout=(Button) findViewById(R.id.MainbuttonAbout);
MainButtonHelp=(Button) findViewById(R.id.MainbuttonHelp);
MainButtonWizard=(Button) findViewById(R.id.MainbuttonWizard);
MainButtonOption=(Button) findViewById(R.id.MainbuttonOption);
MainCheckBoxActive=(CheckBox)findViewById(R.id.MaincheckBoxActive);
MainButtonAbout.setOnClickListener(this);
MainButtonHelp.setOnClickListener(this);
MainButtonWizard.setOnClickListener(this);
MainButtonOption.setOnClickListener(this);
startService(new Intent(MainForm.this, ListenSMSservice.class));
MainCheckBoxActive.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (buttonView.isChecked())
{
Toast.makeText(MainForm.this, "Your Device is Protected Now!!", 1).show();
startService(new Intent(MainForm.this, ListenSMSservice.class));
}
else
{
Toast.makeText(MainForm.this, …Run Code Online (Sandbox Code Playgroud) 我想创建一个appwidget,我想在列表视图中显示资源中的一些数据.我是android新手,所以我不知道.请帮忙
提前致谢
我希望make成为全屏,并且适用于所有智能手机,这个代码部分创建了一个水平和垂直滚动的tablelayout,我也希望查看以布局为中心的edittext矩阵.谢谢
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.seconda);
HorizontalScrollView HSC = new HorizontalScrollView(this);
ScrollView VSC = new ScrollView(this);
VSC.setBackgroundResource(R.drawable.lavagna_psd);
tableLayout = new TableLayout(this);
tableLayout.setGravity(Gravity.CENTER);
values = new EditText[3][3];
for (int i = 0; i < 3; i++) {
tableRow = new TableRow(this);
tableRow.setGravity(Gravity.CENTER);
for (int j = 0; j < 3 ; j++) {
values[i][j] = new EditText(this);
values[i][j].setHint("r: " + (i) + " " + "c: " + (j));
values[i][j].setPadding(10, 10, 10, 10);
tableRow.addView(values[i][j]);
}
tableLayout.addView(tableRow); …Run Code Online (Sandbox Code Playgroud) 我在我的应用中添加了2个小部件.但是,如果用户在某些Android版本上将应用程序移动到SD卡,则小部件将无法使用.
作为解决方案,我创建了一个仅包含小部件的新小应用程序.因此,用户可以将主应用程序移动到SD卡并在内部存储中使用Widgets应用程序,以便能够使用小部件.除了2个主要小部件,Widgets应用程序还有2个小部件(总共4个).这两个额外的小部件是一种beta小部件.如果我看到一个Widget被大量使用,我会改进它并移动它的主程序包.
当用户没有将主应用程序移动到SD卡(或者具有允许从SD卡使用小部件的Android版本)并且用户安装Widgets应用程序以访问那些额外的小部件时,会出现问题.在这种情况下,用户将获得两个主要小部件两次:一次来自主应用程序,另一次来自小部件应用程序.
如果我检测到Widgets应用程序也已安装,我想要做的是从主应用程序中禁用这两个小部件.这是为了避免重复这两个小部件.
如果安装了Widgets应用程序,我知道如何从主应用程序检查.我只是不知道如何以编程方式禁用Widget.那可能吗?
我下载了Android SDK的源代码并修改了android.widget.TextView类.
现在,我试图找出如何用修改后的TextView替换我设备上运行的实际TextView.
我发现编译的类位于手机上的/ system/framework中.
关于如何替换相应的jar和odex文件的任何指针?
注意:我也在谷歌小组中读到,修改android-n-pieces的android将无法正常工作,我们需要构建完整的源代码.
可能的副本如何使Spinner的"禁用"状态看起来被禁用?.
我尝试了帖子中提到的解决方案,即
((Spinner) spinner).getSelectedView().setEnabled(false);
spinner.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)
但是getSelectedView()返回null.我也尝试手动选择一个项目而不是调用getSelectedView但它仍然返回null.
我通过以下android文档:"应用程序小部件与集合"来创建一个显示文本列表的小部件.一切正常,它的工作就像我希望它的工作一样.
现在,而不是显示文本列表,我想显示存储在SD卡中的图像列表.那么如何在我已经实现的代码中完成.如果有人对此有所了解,请帮我解决这个问题.
我写的代码是
WidgetProvider.java
public class WidgetProvider extends AppWidgetProvider
{
public static String EXTRA_WORD=
"com.commonsware.android.appwidget.lorem.WORD";
@Override
public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
for (int i=0; i<appWidgetIds.length; i++)
{
Intent svcIntent=new Intent(ctxt, WidgetService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
RemoteViews widget=new RemoteViews(ctxt.getPackageName(),
R.layout.widget);
widget.setRemoteAdapter(appWidgetIds[i], R.id.words,
svcIntent);
Intent clickIntent=new Intent(ctxt, LoremActivity.class);
PendingIntent clickPI=PendingIntent
.getActivity(ctxt, 0,
clickIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.words, clickPI);
appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
}
super.onUpdate(ctxt, appWidgetManager, appWidgetIds);
}
}
Run Code Online (Sandbox Code Playgroud)
WidgetService.java
public class WidgetService extends RemoteViewsService
{
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent)
{
return(new WidgetDisplay(this.getApplicationContext(), …Run Code Online (Sandbox Code Playgroud)