2015-03-04 3 views
0

Мне нужно выбрать кнопку «H», которая представляет собой атомный элемент в периодической таблице столько раз, сколько необходимо, и ему нужно добавить общий вес и отобразить его в mw_results ,Добавить номера из TextView Android

До сих пор я мог отображать его только два раза, так как я был жестко закодирован.

Любые идеи, как я мог бы продолжать добавлять число, без жесткого кодирования ...?

Спасибо.!

Ниже приведен код:

public void Chem() 
    { 
     final Dialog g = new Dialog(Sol.this); 
     g.setContentView(R.layout.table); 

     final float[] MoWeight = {0}; 

     mw_result = (TextView)findViewById(R.id.editText); 
     mf_result = (EditText)findViewById(R.id.editText4); 
     Chemname = ""; 
     final String space = " "; 
     final int number = 0; 
     Button H = (Button) g.findViewById(R.id.H); 
     Button C = (Button) g.findViewById(R.id.C); 
     H.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       switch (v.getId()) { 

        case R.id.H: 
         mf_result.append(String.valueOf("H")); 
         mw_result.setText(String.valueOf(123)); 
         float MoWeight = Float.valueOf(mw_result.getText().toString()); 
         MoWeight = Float.valueOf(mw_result.getText().toString()) + MoWeight; 
         String mw_res=Float.toString(MoWeight); 
         mw_result.setText(mw_res); 
         mw_result = (TextView)findViewById(R.id.editText); 
         g.dismiss(); 

       } 
      } 
     }); 

C.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       switch (v.getId()) { 

        case R.id.C: 
         mf_result.append(String.valueOf("C")); 
         mw_result.setText(String.valueOf(456)); 
         float MoWeight = Float.valueOf(mw_result.getText().toString()); 
         MoWeight = Float.valueOf(mw_result.getText().toString()) + MoWeight; 
         String mw_res=Float.toString(MoWeight); 
         mw_result.setText(mw_res); 
         mw_result = (TextView)findViewById(R.id.editText); 
         g.dismiss(); 
       } 
      } 
     }); 
     g.show(); 
    } 
+0

вы просто пытаетесь увеличить дисплей на 123, когда H нажата и увеличить дисплей на 456 каждый раз, когда нажимается C? –

+0

Да, это то, что я хочу. Когда вы нажмете H, вы в первый раз получите номер 123 в поле результата. Если вы нажмете h снова, он добавит текущее число (123) и даст вам номер 246, а затем, если вы нажмете C, пока у вас есть номер 246, он добавит на 456, давая вам 702. Установка номера 702 в поле результата. Надеюсь, теперь это яснее. –

+0

Еще один вопрос: что именно вы надеетесь достичь с помощью этих двух строк: 'mf_result.append (String.valueOf (« H »)); mw_result.setText (String.valueOf (123)); ' –

ответ

0

Похоже, вы сбросить вид текста обратно в 123 и 456 соответственно на каждый клик.

Это своего рода трудно увидеть именно то, что вы хотите, но это может помочь вам получить на правильном пути:

public void Chem() 
    { 
     final Dialog g = new Dialog(Sol.this); 
     g.setContentView(R.layout.table); 

     final float[] MoWeightArray = {0}; //rename this for readability -- is this used at all? 

     mw_result = (TextView)findViewById(R.id.editText); 
     mf_result = (EditText)findViewById(R.id.editText4); 
     Chemname = ""; 
     final String space = " "; 
     final int number = 0; 
     Button H = (Button) g.findViewById(R.id.H); 
     Button C = (Button) g.findViewById(R.id.C); 
     H.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       switch (v.getId()) { 

        case R.id.H: 
         String sMW= mw_result.getText().toString(); 
         mf_result.append(String.valueOf("H")); 
         if (sMW.matches("")) { 
         mw_result.setText(String.valueOf(123)); 
         } 
         else{ 
         float MoWeight = Float.valueOf(sMW); 
         MoWeight += 123; 
         String mw_res=Float.toString(MoWeight); 
         mw_result.setText(mw_res); 
         //mw_result = (TextView)findViewById(R.id.editText); no need for this 
         g.dismiss(); 
         } 

       } 
      } 
     }); 

C.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       switch (v.getId()) { 

        case R.id.C: 
         String sMW= mw_result.getText().toString(); 
         mf_result.append(String.valueOf("C")); 
         if (sMW.matches("")) { 
         mw_result.setText(String.valueOf(456)); 
         } 
         else{ 
         float MoWeight = Float.valueOf(sMW); 
         MoWeight += 456; 
         String mw_res=Float.toString(MoWeight); 
         mw_result.setText(mw_res); 
         //mw_result = (TextView)findViewById(R.id.editText); No need for this 
         g.dismiss(); 
         } 
       } 
      } 
     }); 
     g.show(); 
    } 
+0

Большое спасибо! Это, кажется, работает: D –

+0

Отлично! Рад, что смог помочь. –

0

Попробуйте это:

public void Chem() 
    { 
    final Dialog g = new Dialog(Sol.this); 
    g.setContentView(R.layout.table); 

    final float[] MoWeight = {0}; 

    mw_result = (TextView)findViewById(R.id.editText); 
    mf_result = (EditText)findViewById(R.id.editText4); 
    Chemname = ""; 
    final String space = " "; 
    final int number = 0; 

    Button H = (Button) g.findViewById(R.id.H); 
    Button C = (Button) g.findViewById(R.id.C); 

    mw_result.setTag(1);//1 in case you're updating 123 values 
    mw_result.setTag(2);//2 in case you're updating 456 values 

    H.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      int key = Integer.parseInt(mw_result.getTag().toString()); 
      if(key==2){ 
       mw_result.setTag(1);//1 in case you're updating 123 values 
       mf_result.append(String.valueOf("H")); 
       mw_result.setText(String.valueOf(123));      
       g.dismiss(); 
      } 
      else{ 
       float MoWeight = Float.valueOf(mw_result.getText().toString()); 
       MoWeight = Float.valueOf(mw_result.getText().toString()) + 1; 
       String mw_res=Float.toString(MoWeight); 
       mw_result.setText(mw_res); 
      } 
     } 
    }); 

    C.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      int key = Integer.parseInt(mw_result.getTag().toString()); 
      if(key==1){ 
       mw_result.setTag(2);//1 in case you're updating 123 values 
       mf_result.append(String.valueOf("C")); 
       mw_result.setText(String.valueOf(456));     
       g.dismiss(); 
      } 
      else{ 
       float MoWeight = Float.valueOf(mw_result.getText().toString()); 
       MoWeight = Float.valueOf(mw_result.getText().toString()) + 1; 
       String mw_res=Float.toString(MoWeight); 
       mw_result.setText(mw_res); 
      } 
     } 
    }); 
    g.show(); 
} 
Смежные вопросы