【问题标题】:Use value from void in onCreate inputfilter在 onCreate 输入过滤器中使用来自 void 的值
【发布时间】:2013-04-10 17:13:21
【问题描述】:

我正在开发一个在 Android 设备的 /cache 分区上生成交换空间的应用程序。它已经可以计算出交换的最大大小,但可以输入的最大数量仍然是静态的。

对于EditText InputFilter 我使用这个:

@Override
protected void onCreate(Bundle savedInstanceState) {  
    ... 
    final EditText mb = (EditText) findViewById(R.id.editText1);
    mb.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "120")});
    ...
}

我的空虚是这样的:

// Check Disk Space and display
void readSpace(){
    execCommandLine("mount -o rw,remount /cache");
    File spacechecker = new File("/cache");
    long totalSpace = spacechecker.getTotalSpace();
    long usableSpace = spacechecker.getUsableSpace();

    TextView tsp = (TextView) findViewById(R.id.AmmountTotal);
    tsp.setText(totalSpace /1024 /1024 + " MB");

    TextView usp = (TextView) findViewById(R.id.AmmountAvailable);
    usp.setText(usableSpace /1024 /1024 + " MB");

    TextView rsp = (TextView) findViewById(R.id.AmmountRecommended);
    rsp.setText(usableSpace /1024 /1024 -20 + " MB");
}

如何让 120 成为long usableSpace 的值(以 MB 为单位)?

提前致谢

【问题讨论】:

    标签: java android android-edittext diskspace input-filter


    【解决方案1】:

    如果我理解正确,您想更改 TextView 的上限,是吗?

      mb.setFilters(new InputFilter[]{ new InputFilterMinMax("1", Long.toString(usableSpace / 1024 / 1024))});
    

    【讨论】:

    • 是的,你理解的没错,但是每次我尝试在 onCreate 方法中使用 usableSpace 时,Eclipse 都会告诉我它无法解析为变量
    • 在您的 readSpace 方法中执行此操作。再次调用 findViewById 然后设置它。
    【解决方案2】:

    谢谢!现在我做对了!完成的工作代码是:

        @Override
        protected void onCreate(Bundle savedInstanceState) {  
             ...
             readSpace();
             ... 
             final EditText mb = (EditText) findViewById(R.id.editText1);
             ...
    }
    

    还有:

    // Check Disk Space and display
    void readSpace(){
        execCommandLine("mount -o rw,remount /cache");
        File spacechecker = new File("/cache");
        long totalSpace = spacechecker.getTotalSpace();
        long usableSpace = spacechecker.getUsableSpace();
    
        TextView tsp = (TextView) findViewById(R.id.AmmountTotal);
        tsp.setText(totalSpace /1024 /1024 + " MB");
    
        TextView usp = (TextView) findViewById(R.id.AmmountAvailable);
        usp.setText(usableSpace /1024 /1024 + " MB");
    
        TextView rsp = (TextView) findViewById(R.id.AmmountRecommended);
        rsp.setText(usableSpace /1024 /1024 -20 + " MB");
    
        EditText mb = (EditText) findViewById(R.id.editText1);
        mb.setFilters(new InputFilter[]{ new InputFilterMinMax("1", Long.toString(usableSpace /1024 /1024))});
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 2015-12-14
      相关资源
      最近更新 更多