Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序在没有输入时退出,并且警报对话框没有修复错误_Java_Android_Android Alertdialog_Seekbar - Fatal编程技术网

Java 程序在没有输入时退出,并且警报对话框没有修复错误

Java 程序在没有输入时退出,并且警报对话框没有修复错误,java,android,android-alertdialog,seekbar,Java,Android,Android Alertdialog,Seekbar,这是一个程序,它可以工作,但当我在输入框中没有数字时拉动搜索栏,程序退出,警报对话框没有完成它的工作,即使我尝试并捕获了代码 public class MainActivity extends Activity { private SeekBar sbCash; private Button btnten,btntwenty,btnthirty; private TextView tvShwProg,tvfinal; private EditText etCa

这是一个程序,它可以工作,但当我在输入框中没有数字时拉动搜索栏,程序退出,警报对话框没有完成它的工作,即使我尝试并捕获了代码

 public class MainActivity extends Activity {

    private SeekBar sbCash;
    private Button btnten,btntwenty,btnthirty;
    private TextView tvShwProg,tvfinal;
    private EditText etCash;
    final Context context = this;


    @Override
    public void onCreate(Bundle savedInstanceState)
    {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etCash = (EditText)findViewById(R.id.etCash);
        sbCash = (SeekBar)findViewById(R.id.sbCash);
        tvShwProg = (TextView)findViewById(R.id.tvShwProg);
        tvfinal = (TextView)findViewById(R.id.tvFinal);
        btnten = (Button)findViewById(R.id.btnten);
        btntwenty = (Button)findViewById(R.id.btntwenty);
        btnthirty = (Button)findViewById(R.id.btnthirty);

        etCash.addTextChangedListener(new TextWatcher(){

            public void afterTextChanged(Editable arg0) 
            {


            }
            public void beforeTextChanged(CharSequence arg0, int arg1,int arg2, int arg3) 
            {

            }
            public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {

                try{
                guiChanged();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    errormessage();
                }
            }


        });


        SeekBar.OnSeekBarChangeListener sbListener = new SeekBar.OnSeekBarChangeListener() 
        {
            public void onStopTrackingTouch(SeekBar seekBar) {}
            public void onStartTrackingTouch(SeekBar seekBar) {}
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
            {
                try{
                guiChanged();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    errormessage();

                }
            }


        };
        sbCash.setOnSeekBarChangeListener(sbListener);

        dosomethig();
        dosomethig2();
        dosomething3(); 
    }

    public AlertDialog errormessage()
    {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setMessage("Fire Missile?")
               .setPositiveButton("Exit!", new DialogInterface.OnClickListener() 
               {
                   public void onClick(DialogInterface dialog, int id) 
                   {
                       // FIRE ZE MISSILES!
                   }
               })
               .setNegativeButton("Fix", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                   }
               });
        // Create the AlertDialog object and return it
        return builder.create();
    }


    public void guiChanged()
    {
            try{
                DecimalFormat fmt = new DecimalFormat ("0.00");

                int CashMoney = sbCash.getProgress();

                tvShwProg.setText("Current Percentage " +CashMoney+ "%");

                double amount = Double.parseDouble(etCash.getText().toString());

                double moneydue = (amount * (CashMoney/100.0));

                double totalamount = (moneydue + amount);

                tvfinal.setText("Tip " + fmt.format(moneydue)+ " Total "+ fmt.format(totalamount));
            }
            catch(Exception e)
            {
                errormessage();
                e.printStackTrace();

                etCash.setText("Bro enter a number here");
            }

    }            


    public void dosomethig()
    {

        btnten.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                sbCash.setProgress(10);


            }
        });
    }
    public void dosomethig2()
    {

        btntwenty.setOnClickListener(new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                sbCash.setProgress(15);
            }


        });
    }
    public void dosomething3()
    {
        btnthirty.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                sbCash.setProgress(20);

            }
        });
    }
Logcat:

   05-12 19:44:27.144: E/ActivityManager(71): ANR in com.Shashank.nchs.Final_exam.hayes (com.Shashank.nchs.Final_exam.hayes/.MainActivity)
    05-12 19:44:27.144: E/ActivityManager(71): Reason: keyDispatchingTimedOut
    05-12 19:44:27.144: E/ActivityManager(71): Load: 0.57 / 0.57 / 0.27
    05-12 19:44:27.144: E/ActivityManager(71): CPU usage from 21865ms to -1ms ago:
    05-12 19:44:27.144: E/ActivityManager(71):   12% 431/com.Shashank.nchs.Final_exam.hayes: 10% user + 1.9% kernel / faults: 1929 minor 1 major
    05-12 19:44:27.144: E/ActivityManager(71):   0.4% 176/logcat: 0.2% user + 0.2% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   1.3% 41/adbd: 0.1% user + 1.1% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   1.3% 71/system_server: 1% user + 0.2% kernel / faults: 102 minor
    05-12 19:44:27.144: E/ActivityManager(71):   0% 124/jp.co.omronsoft.openwnn: 0% user + 0% kernel / faults: 22 minor
    05-12 19:44:27.144: E/ActivityManager(71):   0.4% 141/com.android.launcher: 0.2% user + 0.1% kernel / faults: 50 minor
    05-12 19:44:27.144: E/ActivityManager(71):   0.3% 199/android.process.acore: 0.3% user + 0% kernel / faults: 39 minor
    05-12 19:44:27.144: E/ActivityManager(71):   0.2% 255/com.android.quicksearchbox: 0.1% user + 0% kernel / faults: 315 minor
    05-12 19:44:27.144: E/ActivityManager(71):   0.2% 267/com.android.defcontainer: 0.2% user + 0% kernel / faults: 37 minor
    05-12 19:44:27.144: E/ActivityManager(71):   0% 31/surfaceflinger: 0% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   0% 115/com.android.systemui: 0% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   0% 136/com.android.phone: 0% user + 0% kernel / faults: 3 minor
    05-12 19:44:27.144: E/ActivityManager(71): 34% TOTAL: 24% user + 9.1% kernel + 0.5% softirq
    05-12 19:44:27.144: E/ActivityManager(71): CPU usage from 1008ms to 1562ms later:
    05-12 19:44:27.144: E/ActivityManager(71):   53% 431/com.Shashank.nchs.Final_exam.hayes: 48% user + 5% kernel / faults: 265 minor
    05-12 19:44:27.144: E/ActivityManager(71):     32% 431/inal_exam.hayes: 30% user + 2.5% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     8.7% 434/GC: 8.7% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     2.5% 437/Compiler: 2.5% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     1.2% 433/HeapWorker: 1.2% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   5.4% 71/system_server: 3.6% user + 1.8% kernel / faults: 5 minor
    05-12 19:44:27.144: E/ActivityManager(71):     5.4% 95/InputDispatcher: 1.8% user + 3.6% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     1.8% 76/Compiler: 1.8% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   5.4% 176/logcat: 3.6% user + 1.8% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   3.7% 371/com.svox.pico: 3.7% user + 0% kernel / faults: 26 minor
    05-12 19:44:27.144: E/ActivityManager(71):     2.4% 371/com.svox.pico: 2.4% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   3.6% 41/adbd: 1.8% user + 1.8% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     7.2% 41/adbd: 3.6% user + 3.6% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     3.6% 161/adbd: 1.8% user + 1.8% kernel
    05-12 19:44:27.144: E/ActivityManager(71):     1.8% 162/adbd: 0% user + 1.8% kernel
    05-12 19:44:27.144: E/ActivityManager(71):   1.1% 267/com.android.defcontainer: 1.1% user + 0% kernel
    05-12 19:44:27.144: E/ActivityManager(71): 100% TOTAL: 85% user + 14% kernel
当没有输入和警报对话框未修复错误时

因为当前您正在从
errormessage()
方法返回
AlertDialog.Builder
实例,而没有调用
AlertDialog.show()
来显示对话框。因此,您需要
alert.show()
来显示
AlertDialog
。按如下方式操作:

      try{
          guiChanged();
        }
        catch(Exception e)
        {
            e.printStackTrace();
            AlertDialog alert =errormessage();
             alert.show(); //<<< show AlertDialog here
        }
试试看{
guiChanged();
}
捕获(例外e)
{
e、 printStackTrace();
AlertDialog alert=errormessage();

alert.show();//有更好的方法来确保editText-etCash中有输入。我不知道您到底想做什么,但是如果用户应该向etCash中提供一些输入,您可以通过将此属性设置为您的etCash-inside-xml布局来确保只有一个数字输入。例如:

        android:inputType="number"

这取决于你想要什么。我认为对你来说,“数字CIMAL”是最好的方式

此外,您还可以在解析之前检查:

     if(etCash.getText().toString().length()<1){
              //show warning
     }

请发布您的logcat outputDude谢谢这很有效,事实上,如果您在errormessega()处添加.Show(),这个尝试捕获是额外的最后一个问题,每次我拉它时,错误对话框会出现很多次,而不是一次,我如何修复它,使它只在没有错误的情况下显示input@user2375589:发生这种情况是因为u在
onTextChanged
方法中显示警报,每当用户在Edittext中键入和char时调用该方法,以便作废此错误您需要首先检查
if(alert.isShowing())
在显示警报之前,如果警报已经显示,那么在显示警报之前先调用cancel Ok我试过了,效果很好,感谢您的帮助和堆栈溢出,我不知道是否可以修复。好的,我要尝试一下,但您能不能将对话框放在///public void on start trackingtouch(SeekBar SeekBar){///而不是这段代码,因为它应该只显示一次作为开始!
        android:inputType="numberSigned"
     if(etCash.getText().toString().length()<1){
              //show warning
     }
    private boolean isNumeric(String str){

for (char c : str.toCharArray())
    {
    if (!Character.isDigit(c)) return false;
     }
   return true;
  }