小编Ger*_*och的帖子

在Visual Studio中更改字体大小的快捷方式

有人知道在Visual Studio 2008中是否有改变字体大小的快捷方式或类似内容吗?

我的意思是类似于Firefox中的Ctrl +鼠标滚轮.

如果你不必一直改变字体大小,访问选项窗口,然后选择环境>字体和颜色是好的,但在我的情况下,我希望能够根据我正在做的事情改变它(编写和阅读代码或只是阅读它.

我想我可以创建两个几乎相同的设置文件,并随时导入它们,但这甚至更慢!

谢谢!

settings font-size visual-studio-2008 visual-studio

86
推荐指数
7
解决办法
9万
查看次数

当方向更改时,使用选项卡重新加载活动时,片段会初始化两次

当我更改设备的方向时,我在使用制表符和片段重新加载活动时遇到问题.

情况如下:

我有一个活动,在操作栏中有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)

以下是产生错误的步骤序列:

  1. 我加载活动,选择选项卡nr 2.并更改设备的方向.
  2. Android会破坏tab nr 2加载的片段的活动和实例(从现在开始,'片段2').然后继续创建活动和片段的新实例.
  3. 在里面Activity.onCreate()我将第一个标签添加到操作栏.当我这样做时,会自动选择此选项卡.它可能代表未来的问题,但我现在不介意.onTabSelected调用并创建并加载第一个片段的新实例(参见下面的代码).
  4. 我添加所有其他选项卡而没有触发任何事件,这很好.
  5. 我打电话ActionBar.selectTab(myTab)选择Tab nr 2.
  6. onTabUnselected()调用第一个选项卡,然后调用onTabSelected()第二个选项卡.此序列替换Fragment 2实例的当前片段(请参阅下面的代码).
  7. 接下来,Fragment.onCreateView()在Fragment 2实例上调用,片段布局变得膨胀.
  8. 这是问题所在.Android调用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)

tabs android device-orientation android-fragments

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

我应该如何测试方法中的null和/或空字符串参数?

通常使用带有字符串参数的方法的类必须再次验证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(或为空)并不是更好,并假设其中的行为另一种情况会是一样的吗?

我想知道你对此的看法.我知道我所要求的更多是技术意见而不是技术问题,但我认为测试社区可能会对这种情况说些有趣的话.

谢谢!

string testing parameters null

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

如何在F#中编写这个C#代码

我习惯在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#中的这种情况?

谢谢!

c# f# try-catch mutable

9
推荐指数
2
解决办法
391
查看次数

在Fragment中使用onPrepareOptionsMenu而不是onCreateOptionsMenu

我在设置一些片段菜单项时遇到了问题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)

events android menu android-menu android-fragments

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