小编Squ*_*onk的帖子

自定义 AlertDialog - android.R.id.custom 的问题

我确定我在这里错过了重点,所以我希望有人能解释一下。

我想在用户触摸ImageView. 我看了看,AlertDialog文档说......

如果要显示更复杂的视图,请查找名为“custom”的 FrameLayout 并将您的视图添加到其中:

...使用以下代码...

    FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);
    fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

因此,作为测试,我在 onCLick() 方法中尝试了以下操作...

    TextView tv = new TextView(this);
    tv.setText("Hello World");
    FrameLayout customFrameLayout = (FrameLayout) findViewById(android.R.id.custom);
    customFrameLayout.addView(tv, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

上面我调用的最后一行addView抛出 aNullPointerException这让我认为android.R.id.custom.

所以问题是,上面有什么问题,还有没有更好的方法来创建自定义弹出窗口(也许通过使用Dialog类或扩展它)?

注意:我仅TextView在此示例中用作测试,我想为实际弹出窗口添加更复杂的内容。

android

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

可以选择使用哪个网络接口?

我有一个应用程序,用于连接到用户家用 PC 上运行的服务。

有两个“简单”的场景......

  1. 用户在他们的设备上启用了 wi-fi,只需使用他们的家庭 WLAN 进行连接。
  2. 用户远离 wi-fi 连接,他们能够连接到移动互联网

我现在面临一个更复杂的场景,即当用户在他们的工作地点并且他们的设备检测到/连接到他们的办公室 WLAN 并且没有通往外部世界的路线时。

问题是,即使他们的设备上同时启用了 wi-fi 和移动互联网,当任何应用程序尝试连接到互联网时,通常会优先使用 wi-fi 接口而不是移动互联网接口。

所以问题是,即使 wi-fi 接口优先,我能否以某种方式绑定到移动接口并进行传出连接?如果是这样,任何有关如何实现这一点的信息的指针都会很有用。谢谢。

android

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

在TabActivity中控制选项卡颜色状态/大小?

好吧,这让我疯了 - 我搜索了所有可以找到的参考文献和例子,我似乎仍然遗漏了一些非常明显的东西.这些是7天电视指南的标签(通常不带红色箭头,显然:) :)

在此输入图像描述

我需要知道的是构成Tab本身主体/背景的对象(我认为是View还是Drawable)是什么?(如红色箭头所示)以及如何访问它或让它自动将其状态颜色更改为我选择的列表?另外,如何让指标TextView的状态颜色跟随呢?

示例:在上面的捕获中,它是可读的,因为我已将textColor设置为静态灰色(而不是在所选选项卡上消失的亮白色).但我想让它自动变为白色标签上的黑色文字(选中)和黑色的明亮白色文字(未选中).

感谢所有的帮助.

android tabwidget tabactivity

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

从字符串获取布局ID,将无法正常工作

看过每一个问题,都无法让它发挥作用.

我想用一个字符串的值设置一个AppWidgets布局(所以只需更改字符串就可以将布局切换到另一个布局).

String NoteString = "R.layout.widget_blue".toString();

int resID = context.getResources().getIdentifier(NoteString, "layout", context.getPackageName());

RemoteViews views = new RemoteViews(context.getPackageName(), resID);
Run Code Online (Sandbox Code Playgroud)

不知道为什么它不起作用,小部件只是说:"问题加载小部件"..

这很好用:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_blue);
Run Code Online (Sandbox Code Playgroud)

谢谢

string android widget

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

我在哪里可以找到与proguard相关的Android构建选项的文档

我一直在使用android构建系统做很多工作,我遇到了一个情况,即proguard正在删除导致NoClassDefFoundError的必需类.我可以告诉班级没有被发现但是我花了一段时间才发现proguard弄乱了用我的代码构建的类.

我终于发现我可以通过添加LOCAL_PROGUARD_ENABLED := disabled到Android.mk文件来防止proguard运行.

我只能做到这一点,因为我碰巧偶然遇到了同样的Android.mk文件.

我无法找到以下任何文档

LOCAL_PROGUARD_FLAGS
LOCAL_PROGUARD_ENABLED
LOCAL_PROGUARD_FLAG_FILES
Run Code Online (Sandbox Code Playgroud)

最好我可以告诉我们的典型用法LOCAL_PROGUARD_FLAGS是识别proguard配置文件的位置,如下所示:

LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
Run Code Online (Sandbox Code Playgroud)

问题是我无法弄清楚它与LOCAL_PROGUARD_FLAG_FILES使用的有何不同如下:

LOCAL_PROGUARD_FLAG_FILES := proguard.flags
Run Code Online (Sandbox Code Playgroud)

LOCAL_PROGUARD_ENABLED可用于禁用的ProGuard但是比其他disabled的选择我不知道还有什么可以与此选项一起使用.

LOCAL_PROGUARD_ENABLED := disabled
Run Code Online (Sandbox Code Playgroud)

有谁知道我在哪里可以找到这些构建选项的文档(官方或非官方)?谷歌似乎没有返回任何有用的搜索.

android build-process build proguard

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

将日期时间字符串格式化为仅限时间

我正在从SQLite DB中检索日期时间,格式是......

2011-01-24 02:45:00
Run Code Online (Sandbox Code Playgroud)

在C#中我可以简单地使用DateTime.Parse("2011-01-24 02:45:00").ToString("HH:mm")以获取字符串02:45

他们是我可以在Android/Java中这样做的吗?我的Android应用中的代码看起来像这样......

// dateStr below is logging as correctly being yyyy-MM-dd HH:mm:ss format
String dateStr = cursor.getString(cursor.getColumnIndex("start_time"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String shortTimeStr = sdf.format(dateStr); // <-- throws IllegalArgumentException
Run Code Online (Sandbox Code Playgroud)

编辑:感谢doc_180和Konstantin Burov - 给出的例子帮我解决了问题.部分问题是我正在导入java.sql.Date而不是java.util.Date.我改变了一切,现在它对我来说很完美.

java android date-format simpledateformat

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

SQLITE3和Android中的rowid

我在数据库上执行插入操作,我想知道该插入的rowid是什么.

这完成了任务:

Uri uri = ContentResolver.insert(url,values);    //Make insert
int rowid= Integer.parseInt(uri.getFragment());  //Get rowid
Run Code Online (Sandbox Code Playgroud)

Android文档声明insert返回"新创建的行的URL".并且Uri方法getFragment()应该在/#之后返回所有内容.那么,我的理解是正确的,getFragment()因此会回到我的rowid?

database sqlite android rowid

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

如何从android获取有关卫星的信息?


我试图从android获取卫星信息并写下以下代码,但没有给出任何结果,任何人都可以指出为什么会如此?

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gps);

    final LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    GpsStatus gpsStatus = locationManager.getGpsStatus(null);
    if(gpsStatus != null)
    {
         Iterable<GpsSatellite>satellites = gpsStatus.getSatellites();
         Iterator<GpsSatellite>sat = satellites.iterator();
         int i=0;
         while (sat.hasNext()) {
             GpsSatellite satellite = sat.next();


             strGpsStats+= (i++) + ": " + satellite.getPrn() + "," + satellite.usedInFix() + "," + satellite.getSnr() + "," + satellite.getAzimuth() + "," + satellite.getElevation()+ "\n\n";
         }
     }
     TextView tv = (TextView)(findViewById(R.id.Gpsinfo));
     tv.setText(strGpsStats);
}
Run Code Online (Sandbox Code Playgroud)

谢谢
Nohsib

android

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

Android比较字符串忽略大小写

resultString是我从sqlite获得的参数

resultString = result.getString(result.getColumnIndex(1));
Run Code Online (Sandbox Code Playgroud)

我想比较忽略情况和用户输入,以下是我使用的代码.但它不起作用.

例如,在数据库中,我存储用户名"George"当我登录时,我必须输入"George"."george"不起作用.

这是我要比较的代码.

if (userName.equalsIgnoreCase(resultString)) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

string android

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

如何使用Float数据类型调用setText()?

    public void onClick(View v) {
    switch(v.getId()){
    case R.id.save2:
        s = text.getText().toString();
        number = Float.parseFloat(num.getText().toString());
        SharedPreferences.Editor editor = shared.edit();
        editor.putString("sharedtext",s);
        editor.putFloat("sharednum",number);
        editor.commit();
        Toast.makeText(this,"save2",Toast.LENGTH_SHORT).show();
        break;
    case R.id.load2:
        String returner = shared.getString("sharedtext","Returner fail");
        float returnnum = shared.getFloat("sharednum",0);
        text.setText(returner);
        num.setText(returnnum); //error here
        Toast.makeText(this,"load2",Toast.LENGTH_SHORT).show();
        break;
    case R.id.page2:
        intent= new Intent(this,SharedPreferencesActivity.class);
        startActivity(intent);
        Toast.makeText(this,"page2",Toast.LENGTH_SHORT).show();
        break;
    }
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个错误?

如何制作像setInt(int num);

顺便说一下,变量num和text都是EditText

android

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