2017-08-16 31 views
-1

I have a text view, by clicking TextView I have a dialog with 3 NumberPickers. I want to concatenate values to string which will looks like '99 9 99' or '99999'[selected integers from NumberPickers] from all 3 different NumberPickers shown in dialog, and set the string to the textView.連擊數串由不同數量的採摘獲取和顯示一個TextView

public void pricePTola() { 

    //int price; 
    //TextView; 
    //double RPT; 
    NumberPicker np1, np2, np3; 
    final int npThousand, npHundrd, npTen; 
    //final String[] price = new String[1]; 
    String price; 

    TextView textView = (TextView)findViewById(R.id.RPT); 
    Dialog dialog = new Dialog(HomeActivity.this); 
    dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    dialog.setContentView(R.layout.number_picker); 
    dialog.setTitle("RATE PER TOLA"); 
    //dialog.set 

    //String strPrice = String.valueOf(price); 
    //TextView RPT=(TextView)findViewById(R.id.RPT); 

    np1=(NumberPicker)dialog.findViewById(R.id.np1); 
    np1.setMaxValue(99); 
    np1.setMinValue(00); 
    np1.setWrapSelectorWheel(true); 
    npThousand=np1.getValue(); 
    //npThousand=np1.toString(); 

    np2=(NumberPicker)dialog.findViewById(R.id.np2); 
    np2.setMaxValue(9); 
    np2.setMinValue(0); 
    np1.setWrapSelectorWheel(true); 
    npHundrd=np2.getValue(); 
    //npHundrd=np2.toString(); 

    np3=(NumberPicker)dialog.findViewById(R.id.np3); 
    np3.setMaxValue(99); 
    np3.setMinValue(00); 
    np1.setWrapSelectorWheel(true); 
    npTen=np3.getValue(); 
    np3.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 

      picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5); 
      /*price[0] = npThousand + "" + npHundrd + "" + npTen; 
      TextView RPT = (TextView) findViewById(R.id.RPT); 
      RPT.setText(price[0]);*/ 
     } 
    }); 
    /*np2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 

      picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5); 
      price[0] = npThousand + "" + npHundrd + "" + npTen; 
      TextView RPT = (TextView) findViewById(R.id.RPT); 
      RPT.setText(price[0]); 
     } 
    }); 
    np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 

      picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5); 
      price[0] = npThousand + "" + npHundrd + "" + npTen; 
      TextView RPT = (TextView) findViewById(R.id.RPT); 
      RPT.setText(price[0]); 
     } 
    }); 
    dialog.show(); 

    //price = valueOf(valueOf(np1) + valueOf(np2) + valueOf(np3)); 
    price = npThousand+""+ npHundrd+""+npTen; 
    TextView RPT=(TextView)findViewById(R.id.RPT); 
    RPT.setText(price); 

} 

他們MainActivity.Java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    final TextView TV1=(TextView)findViewById(RPT); 
    TV1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      pricePTola(); 

     } 
    }); 

回答

0

1 - 我看到了你應該函數pricePTola返回字符串你不應該在其上聲明TextView。

2 - 在函數pricePTola上的每個onvalueChange函數中,您必須將npThousand = np1.getValue();對於np1,對於其他兩個採購員也是這樣做的。

3-功能String result = String.valueOf(npThousand)+String.valueOf(npHundrd)+String.valueOf(npTen); return result;結束

4 - 終於在OnCreate

TV1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     String final = pricePTola(); 
     TV1.setText(final); 

    } 
}); 

我希望這有助於

+0

我做 我做np1.setOnValueChangedListener(新NumberPicker.OnValueChangeListener(){ @Override public void onValueChange(NumberPicker numberPicker,int i,int i1){ final int npHundrd = np2.getValue(); } }); –

+0

我正在做2種方法。第一是這樣的: np1.setOnValueChangedListener(新NumberPicker.OnValueChangeListener(){ @Override 公共無效onValueChange(NumberPicker numberPicker,INT I,INT I1){ 最終詮釋npHundrd = np2.getValue();} } ) ;但在這裏當我做'字符串結果= String.valueOf(valueOf(npThousand)+ valueOf(npHundrd)+ valueOf(npTen)); 'npThousand/Hundrd/Ten在這裏沒有工作。那麼如果我嘗試'int npTen = np3.getValue(); '在'OnValueChangedListene'之外放置它會在TextView中顯示一些垃圾值。 –

+0

它繼續在文本視圖中扔垃圾值。它顯示文本中的值當對話框打開時顯示視圖,意味着文本視圖在對話框打開時獲取值時不會在對話框關閉或numberPicker值更改時獲取/獲取值。 –