有人知道在Visual Studio 2008中是否有改变字体大小的快捷方式或类似内容吗?
我的意思是类似于Firefox中的Ctrl +鼠标滚轮.
如果你不必一直改变字体大小,访问选项窗口,然后选择环境>字体和颜色是好的,但在我的情况下,我希望能够根据我正在做的事情改变它(编写和阅读代码或只是阅读它.
我想我可以创建两个几乎相同的设置文件,并随时导入它们,但这甚至更慢!
谢谢!
当我更改设备的方向时,我在使用制表符和片段重新加载活动时遇到问题.
情况如下:
我有一个活动,在操作栏中有3个标签.每个选项卡FrameLayout在主视图中加载不同的片段.如果我不改变设备的方向,一切正常.但是,当我这样做时,Android会尝试将当前选定的片段初始化两次,从而产生以下错误:
E/AndroidRuntime(2022): Caused by: android.view.InflateException: Binary XML file line #39: Error inflating class fragment
Run Code Online (Sandbox Code Playgroud)
以下是产生错误的步骤序列:
Activity.onCreate()我将第一个标签添加到操作栏.当我这样做时,会自动选择此选项卡.它可能代表未来的问题,但我现在不介意.onTabSelected调用并创建并加载第一个片段的新实例(参见下面的代码).ActionBar.selectTab(myTab)选择Tab nr 2.onTabUnselected()调用第一个选项卡,然后调用onTabSelected()第二个选项卡.此序列替换Fragment 2实例的当前片段(请参阅下面的代码).Fragment.onCreateView()在Fragment 2实例上调用,片段布局变得膨胀.onCreate()然后调用onCreateView()片段实例ONCE AGAIN,当我尝试(第二次)对布局进行充气时会产生异常.显然问题是Android正在初始化片段两次,但我不知道为什么.
当我自动加载活动时,我尝试不选择第二个标签,但第二个片段无论如何都被初始化并且没有显示(因为我没有选择它的标签).
我发现了这个问题:Android片段在方向更改时重新创建
用户问我的基本相同,但我不喜欢所选择的答案(它只是一个workaroud).必须有一些方法让这个工作没有android:configChanges诀窍.
如果不清楚,我想知道如何阻止片段的重新创建或避免它的双重初始化.很高兴知道为什么会发生这种情况.:P
这是相关代码:
public class MyActivity extends Activity implements ActionBar.TabListener {
private static final String TAG_FRAGMENT_1 = "frag1";
private static final String TAG_FRAGMENT_2 = …Run Code Online (Sandbox Code Playgroud) 通常使用带有字符串参数的方法的类必须再次验证null或为空,例如:
public class MyClass {
public void MyMethod(string param){
if(string.IsNullOrEmpty(param)){
throw new ArgumentNullException(...);
}
//...
}
}
Run Code Online (Sandbox Code Playgroud)
很明显,该方法的行为对于两个(无效)值都是相同的.这是一种非常常见的情况,在测试这些方法时,我总是怀疑如何做到这一点.我总是为这些案例创建两个单独的测试:
[TestClass]
public class Tests {
[TestMethod]
public void MyMethod_should_fail_if_param_is_null(){
//...
myclass.MyMethod(null);
//...
}
[TestMethod]
public void MyMethod_should_fail_if_param_is_empty(){
//...
myclass.MyMethod("");
//...
}
Run Code Online (Sandbox Code Playgroud)
}
但我看到太多的冗余.那些测试完全相同,唯一的区别是传递给方法的参数.这非常困扰我,因为我必须为每个字符串参数创建两个测试.具有3个参数的方法将仅具有6个测试以测试参数.
我认为这是测试这些参数的正确方法,但是如果我知道99%的字符串参数将以相同的方式进行验证,那么测试它们是否为null(或为空)并不是更好,并假设其中的行为另一种情况会是一样的吗?
我想知道你对此的看法.我知道我所要求的更多是技术意见而不是技术问题,但我认为测试社区可能会对这种情况说些有趣的话.
谢谢!
我习惯在C#中编写这样的代码:
SomeObj obj;
try{
// this may throw SomeException
obj = GetSomeObj();
}catch(SomeException){
// Log error...
obj = GetSomeDefaultValue();
}
obj.DoSomething();
Run Code Online (Sandbox Code Playgroud)
这是我在F#中翻译它的方式(obj是一个列表):
let mutable obj = []
try
obj <- getSomeObj
with
| ex ->
// Log ex
obj <- getSomeDefaultValue
doSomething obj
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用可变变量的情况下在F#中执行此操作?是否有一种更"优雅"的方式来处理F#中的这种情况?
谢谢!
我在设置一些片段菜单项时遇到了问题ActionBar,我找到了解决问题的方法,但我不明白它为什么会起作用.
我想在onCreateOptionsMenu方法中从菜单xml文件中对其进行充气后,立即更改菜单项中的可见性.代码似乎工作正常,但没有明显的效果.我解决了在onCreateOptionsMenu方法中夸大菜单但在方法中改变它的可见性的问题onPrepareOptionsMenu.
我想知道的是为什么改变可见性onCreateOptionsMenu不起作用.
我能做些什么的onPrepareOptionsMenu,我不能做onCreateOptionsMenu?
这里有什么模式吗?
谢谢!
以下是相关代码,以防万一:
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}
Run Code Online (Sandbox Code Playgroud)