2017-08-10 56 views
0
   // Custom Dialog Box 
       final AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this, R.style.Theme_AppCompat_Dialog_Alert); 
       final View mView = getLayoutInflater().inflate(R.layout.completed, null); 
       ImageButton imgForm = (ImageButton) mView.findViewById(R.id.RateButton); 

       mBuilder.setCancelable(false); 
       mBuilder.setView(mView); 

       final AlertDialog dialog = mBuilder.create(); 
       dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
       dialog.show();        // Dialogbox appears 



       // Interest Rating 
       final AlertDialog.Builder nBuilder = new AlertDialog.Builder(MainActivity.this, R.style.Theme_AppCompat_Light_Dialog_Alert); 
       final View nView = getLayoutInflater().inflate(R.layout.intrst, null); 
       Save_Intrst = (Button) nView.findViewById(R.id.SaveIntrst); 

       nBuilder.setCancelable(false); 
       nBuilder.setView(nView); 
       final AlertDialog dilog = nBuilder.create(); 

       // LongPress Image Button 
       imgForm.setOnLongClickListener(new View.OnLongClickListener(){ 
        @Override 
        public boolean onLongClick(View view){ 

         dialog.dismiss(); 
         dilog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
         dilog.show();   // Dialogbox appears 
         return true; 
        } 
       }); 


       Save_Intrst.setOnClickListener(new View.OnClickListener(){ 
        String IntrstLvl; 
        @Override 
        public void onClick(View v){ 

         RatingBar rBar = (RatingBar)nView.findViewById(R.id.ratingStar); 

         IntrstLvl = Integer.toString(rBar.getNumStars()); 

         addData(IntrstLvl); 

         dilog.dismiss(); 
         Log.d(TAG,"Dismissed"); 
        } 
       }); 

每當我在Save_Intrst中選擇「保存」時,無論我選擇什麼,它都會保存5顆星。我對Android開發還很陌生,現在已經有一段時間了。對話框中的星級不會更改保存的值

這只是項目代碼的一小部分,我相信它足夠了,它顯示我的提交按鈕,提交按鈕將啓動一個對話框,在圖像中有一個祕密按鈕(ImgForm)圖像不會顯示,但這不是問題,長時間按下後,它將啓動另一個具有五星級酒吧和一個保存按鈕的對話框,該對話框用於在完成以前的要求後進行評分。即使在將應用重新安裝到設備上之後,無論插入什麼內容,該評分總是會保存「5」。

回答

1

getNumStars()會告訴你所顯示的星星的最大數量,並將永遠爲5,因爲你已經定義了它。如果您想要實際選定的評分,則需要getRating()。見this documentation

1

您需要使用rBar.getRating()

RatingBar rBar = (RatingBar)nView.findViewById(R.id.ratingStar); 

IntrstLvl = Integer.toString(rBar.getRating());