我创建了一个布局(比如my_layout.xml),其中包括两个其他XML布局文件,比如some_layout.xml和another_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抛出了,因为cb是null.我猜那是因为包含的布局some_checkbox(some_layout)没有加载setContentView(R.layout.some_layout).
R.id.some_checkbox null?some_layout真的是可见的.some_layout变量,就像我在上面的代码片段中尝试过的那样?我终于解决了它,使用以下内容,由stealthjong建议:
一种解决方案可能是初始化
checkedChangeListener,向可扩展列表视图添加侦听器,以及打开可扩展列表视图的子项时,检查您Checkbox是否是其中一个膨胀的子项,并添加checkedchangeListenerif if.
我创建了一个名为的方法setCheckedChangeListenerToElement(int resourceId, OnCheckedChangeListener listener),它保存给定的resourceId(它是附加监听器的元素的ID)和给定的监听器.一旦inflater调用该方法getChildView(int groupPosition, int childPosition, boolean isLastChild, …
我有一个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)
这个例子试图做的是显示:
请大胆!
第一行是粗体.这个不是.
但问题是:文本的第一行不会以粗体显示.
为什么不这样做呢?
前几天我正在阅读Kernighan和Rob Pike 的编程实践.
在第二章中,在" 搜索"部分,我阅读了一些在我脑海中造成混淆的行.
"没有什么比用于存储静态表格数据的数组更好.编译时初始化使得构造这样的数组变得便宜和容易.(在Java中,初始化发生在运行时,但这是一个不重要的实现细节,除非数组很大. )"
我的问题是,如果用户只在运行时提供数组或变量,并且变量的内存分配在运行时进行,那么在任何语言中如何编译时都可以进行数组或变量的初始化.不知道内存地址如何初始化数组?
我正在尝试将摄像机录制内容写入网络流,请参阅以下代码段:
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());,它不会.
我有一个EditText字段,用户只能输入六位数字.当EditText聚焦时,它应该提示用户他只能输入六位数字.
想法是以灰色显示剩余的数字,如下所示:
当用户输入一个数字时,它看起来像这样:
(红色垂直条表示光标.)
光标不应位于两个图像中当前位置的后面; 灰色数字应该只是可见的,不应该是可选的.
所以实际上我想设置占位符文本,但在用户输入时保留占位符文本的一部分.
我TextInputLayout从设计支持库中读到了这个类,但我不知道如何实现上述想法.
这该怎么做?
int x = 17;
int y = 013;
System.out.println("x+y = " + x + y);
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我得到输出1711.任何人都可以告诉我如何获得1711
这是代码,我想在选择随机图像后将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设备,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
将从控制台输入获取的字符串与数组中的字符串进行比较时,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) 我想知道是否有选项,当我键入文本框或拖动到任何东西(我正在使用D&D功能)时,它上面的文本将自动插入括号.我不想在逻辑上或代码中超出ui那样做.那可能吗?
例如:如果我输入AAA,我会在文本框中看到(AAA).