小编MC *_*ror的帖子

如何在Android中以编程方式加载布局XML文件?

我创建了一个布局(比如my_layout.xml),其中包括两个其他XML布局文件,比如some_layout.xmlanother_layout.xml.my_layout.xml是使用绘制的setContentView(R.layout.my_layout).

现在我有一个带ID的复选框some_checkbox,它在some_layout.xml中定义,我想给复选框一个OnCheckedChangeListenerusing setOnCheckedChangeListener(),就像这样:

CheckBox cb = (CheckBox) findViewById(R.id.some_checkbox);
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    ...
});
Run Code Online (Sandbox Code Playgroud)

但现在NullPointerException抛出了,因为cbnull.我猜那是因为包含的布局some_checkbox(some_layout)没有加载setContentView(R.layout.some_layout).

  • 问题1:为什么?为什么回归发现R.id.some_checkbox nullsome_layout真的可见的.
  • 问题2:如何"加载" some_layout以便我可以捕获some_layout变量,就像我在上面的代码片段中尝试过的那样?

UPDATE

我终于解决了它,使用以下内容,由stealthjong建议:

一种解决方案可能是初始化checkedChangeListener,向可扩展列表视图添加侦听器,以及打开可扩展列表视图的子项时,检查您Checkbox是否是其中一个膨胀的子项,并添加checkedchangeListenerif if.

我创建了一个名为的方法setCheckedChangeListenerToElement(int resourceId, OnCheckedChangeListener listener),它保存给定的resourceId(它是附加监听器的元素的ID)和给定的监听器.一旦inflater调用该方法getChildView(int groupPosition, int childPosition, boolean isLastChild, …

layout android

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

使用SpannableStringBuilder时,为什么我的文本没有显示样式?

我有一个SpannableString对象的问题.

下面是一个简短的例子:

SpannableString spanstr = new SpannableString("Bold please!");
spanstr.setSpan(new StyleSpan(Typeface.BOLD), 0, spanstr.length(), 0);

SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(spanstr);
sb.append("\n"); // A newline
sb.append("The first line is bold. This one isn't.");

CharSequence cq = sb.subSequence(0, sb.length());
// ^There's no such method to return a SpannableString,
// so I try to return a CharSequence instead.

// And then, at last:
TextView contentView = (TextView) findViewById(R.id.some_id);
contentView.setText(cq);
Run Code Online (Sandbox Code Playgroud)

这个例子试图做的是显示:

请大胆!
第一行是粗体.这个不是.

但问题是:文本的第一行不会以粗体显示.

为什么不这样做呢?

android spannablestring

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

编程实践(一些令人困惑的陈述)

前几天我正在阅读Kernighan和Rob Pike 的编程实践.

在第二章中,在" 搜索"部分,我阅读了一些在我脑海中造成混淆的行.

"没有什么比用于存储静态表格数据的数组更好.编译时初始化使得构造这样的数组变得便宜和容易.(在Java中,初始化发生在运行时,但这是一个不重要的实现细节,除非数组很大. )"

我的问题是,如果用户只在运行时提供数组或变量,并且变量的内存分配在运行时进行,那么在任何语言中如何编译时都可以进行数组或变量的初始化.不知道内存地址如何初始化数组?

java arrays search

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

如何通过网络流式传输摄像机流,生成有效的视频文件,使用Android?

我正在尝试将摄像机录制内容写入网络流,请参阅以下代码段:

ParcelFileDescriptor fd = ParcelFileDescriptor.fromSocket(socket);
this.camera.lock(); // this.camera refers to an android.hardware.Camera instance.
this.camera.unlock();
this.mediaRecorder = new MediaRecorder();
this.mediaRecorder.setCamera(this.camera);
this.mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
this.mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
this.mediaRecorder.setProfile(CamcorderProfile.get(0, CamcorderProfile.QUALITY_HIGH));
this.mediaRecorder.setOutputFile(fd.getFileDescriptor());
this.mediaRecorder.prepare();
this.mediaRecorder.start();
Run Code Online (Sandbox Code Playgroud)

然后我试图在连接的另一端捕捉到它:与Socket.getInputStream()我读的字节数,是的,字节进来字节.实际写入在网络上.

但是当尝试使用FileOutputStream类将其保存到文件中,并使用VLC打开文件时,它就无法读取.

我怎样才能最终使文件"可播放",这意味着它是一个有效的视频文件?

编辑:

当我使用时this.mediaRecorder.setOutputFile("/sdcard/out.mp4");,我可以在Android中打开视频文件,它将成功播放.但是,当我使用时this.mediaRecorder.setOutputFile(fd.getFileDescriptor());,它不会.

android stream mediarecorder

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

在Android中的EditText中键入占位符提示

我有一个EditText字段,用户只能输入六位数字.当EditText聚焦时,它应该提示用户他只能输入六位数字.

想法是以灰色显示剩余的数字,如下所示:

提示剩余数字

当用户输入一个数字时,它看起来像这样:

提示剩余数字

(红色垂直条表示光标.)

光标不应位于两个图像中当前位置的后面; 灰色数字应该只是可见的,不应该是可选的.

所以实际上我想设置占位符文本,但在用户输入时保留占位符文本的一部分.

TextInputLayout从设计支持库中读到了这个类,但我不知道如何实现上述想法.

这该怎么做?

android

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

Java:两个整数的总和被打印为两者的串联

int x = 17;
int y = 013;
System.out.println("x+y = " + x + y);
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我得到输出1711.任何人都可以告诉我如何获得1711

java

5
推荐指数
2
解决办法
5222
查看次数

setText没有更新

这是代码,我想在选择随机图像后将TextText设置为Textview数组..它不会更新textVew.我传递Context并查看我的其他活动的这个类的构造函数?这是非活动类如何实现相同?

public class DisplayObject {
    Random _randomGenerator = new Random();
    int hudDisplay[] = {
        R.id.HUD_Text_Element1,
        R.id.HUD_Text_Element2,
        R.id.HUD_Text_Element3,
        R.id.HUD_Text_Element4,
        R.id.HUD_Text_Element5,
        R.id.HUD_Text_Element6,
        R.id.HUD_Text_Element7
    };

    static View[] _hiddenObjects;
    int NO_OF_OBJECTS = 15;
    TextView[] _HudTextDisplay = new TextView[7];

    public HiddenObject(Context context, View v) {
        // TODO Auto-generated constructor stub

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View huddisplay = inflater.inflate(R.layout.gameplay, null);
        /*NO_OF_OBJECTS = context.getResources().getInteger(R.integer.NO_OF_OBJECTS_AVAILABLE_PER_LEVEL);*/
        _hiddenObjects = new View[NO_OF_OBJECTS];
        random();

        for (int i = 0; i < hudDisplay.length; ++i) {
            _HudTextDisplay[i] = (TextView) huddisplay.findViewById(hudDisplay[i]);
            _HudTextDisplay[i].setText(_hiddenObjects[i].getTag().toString());
        }
    } …
Run Code Online (Sandbox Code Playgroud)

android

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

Android模拟器 - 屏幕方向无法正常工作

我创建了一个虚拟的Android设备,480x800运行它,并且因为我已经找到了如何更改屏幕orientation(纵向横向,CTRL+F11/ CTRL+F12/ KP7/ KP9),我使用这些键来更改orientation.

但是当我尝试其中一个键时,虚拟屏幕会旋转90度,但方向不会改变.因此,按钮垂直放置在屏幕上,所有文本也是如此.就像一张旋转90度的照片.

如何让虚拟学位实际切换到其他布局文件(/res/layout-land/activity_entry.xml)?Eclipse的图形查看器可以landscape/portrait正确切换.

编辑
我在此onCreateOptionsMenu(Menu menu) 方法下的活动中添加了此部分,但应用程序无法识别屏幕方向更改:

@Override
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig);
    Context context = getApplicationContext();
    CharSequence text = "Orientation changed";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
}
Run Code Online (Sandbox Code Playgroud)

编辑2
当我this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)onCreate()方法中调用时,它运行良好.

android screen-orientation android-virtual-device android-emulator

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

使用.equals()的字符串比较在Java中不起作用.

将从控制台输入获取的字符串与数组中的字符串进行比较时,false除非我添加,否则总是这样.toString().两个字符串都是相同的,它应该工作而不添加.toString().任何人都可以帮我找出原因吗?

在这里,我从控制台获取要比较的字符串:

System.out.println("\nEnter the name you wish to remove from the list.");
String name = in.nextLine();
System.out.println("\n\"" + myNameList.remove(new MyOrderedList(name)) + "\"" + " removed from the name list\n");
Run Code Online (Sandbox Code Playgroud)

这是删除方法:

public T remove(T element) {
    T result;
    int index = find(element);

    if (index == NOT_FOUND) {
        throw new ElementNotFoundException("list");
    }

    result = list[index];
    rear--;

    /** shift the appropriate elements */
    for (int scan = index; scan < rear; scan++) {
        list[scan] = list[scan+1];
    } …
Run Code Online (Sandbox Code Playgroud)

java string-comparison

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

在文本框值中添加括号

我想知道是否有选项,当我键入文本框或拖动到任何东西(我正在使用D&D功能)时,它上面的文本将自动插入括号.我不想在逻辑上或代码中超出ui那样做.那可能吗?

例如:如果我输入AAA,我会在文本框中看到(AAA).

c# wpf xaml textbox mvvm

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