标签: android-widget

Android:点击时如何从Button获取文本?

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 button android-widget

1
推荐指数
1
解决办法
1万
查看次数

更新非常简单的appwidget的问题

我一直在关注这个教程,试图为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)

android android-widget

1
推荐指数
1
解决办法
4038
查看次数

具有自定义视图的对话框,setCanceledOnTouchOutside不起作用

我正在使用带有自定义视图的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)

android android-widget android-layout

1
推荐指数
1
解决办法
6869
查看次数

如何在Android中创建一个无法被Advanced Task Killer杀死的服务

我创建了一个安全应用程序,就像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)

java android android-widget android-ndk android-manifest

1
推荐指数
1
解决办法
4264
查看次数

如何将listview设置为appwidget?

我想创建一个appwidget,我想在列表视图中显示资源中的一些数据.我是android新手,所以我不知道.请帮忙

提前致谢

android listview android-widget android-appwidget

1
推荐指数
1
解决办法
2437
查看次数

如何为所有活动设置全屏布局

我希望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)

android android-widget android-intent android-layout

1
推荐指数
1
解决办法
1万
查看次数

以编程方式取消注册窗口小部件

我在我的应用中添加了2个小部件.但是,如果用户在某些Android版本上将应用程序移动到SD卡,则小部件将无法使用.

作为解决方案,我创建了一个仅包含小部件的新小应用程序.因此,用户可以将主应用程序移动到SD卡并在内部存储中使用Widgets应用程序,以便能够使用小部件.除了2个主要小部件,Widgets应用程序还有2个小部件(总共4个).这两个额外的小部件是一种beta小部件.如果我看到一个Widget被大量使用,我会改进它并移动它的主程序包.

当用户没有将主应用程序移动到SD卡(或者具有允许从SD卡使用小部件的Android版本)并且用户安装Widgets应用程序以访问那些额外的小部件时,会出现问题.在这种情况下,用户将获得两个主要小部件两次:一次来自主应用程序,另一次来自小部件应用程序.

如果我检测到Widgets应用程序也已安装,我想要做的是从主应用程序中禁用这两个小部件.这是为了避免重复这两个小部件.

如果安装了Widgets应用程序,我知道如何从主应用程序检查.我只是不知道如何以编程方式禁用Widget.那可能吗?

android android-widget

1
推荐指数
1
解决办法
1079
查看次数

修改android.jar类并在Android设备中替换它?

我下载了Android SDK的源代码并修改了android.widget.TextView类.

现在,我试图找出如何用修改后的TextView替换我设备上运行的实际TextView.

我发现编译的类位于手机上的/ system/framework中.

关于如何替换相应的jar和odex文件的任何指针?

注意:我也在谷歌小组中读到,修改android-n-pieces的android将无法正常工作,我们需要构建完整的源代码.

android android-widget dex

1
推荐指数
1
解决办法
4670
查看次数

Android:如何禁用微调器禁用外观

可能的副本如何使Spinner的"禁用"状态看起来被禁用?.

我尝试了帖子中提到的解决方案,即

((Spinner) spinner).getSelectedView().setEnabled(false);
spinner.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

但是getSelectedView()返回null.我也尝试手动选择一个项目而不是调用getSelectedView但它仍然返回null.

android android-widget android-spinner

1
推荐指数
1
解决办法
8173
查看次数

显示图像列表时应用程序窗口小部件问题

我通过以下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)

java android android-widget

1
推荐指数
1
解决办法
645
查看次数