2016-12-05 30 views
0

我將這個評級欄添加到我的應用程序,但它的啓動畫面後,我的應用程序崩潰。我嘗試了不同的版本,但它總是崩潰。甚至沒有到達評級欄的頁面。添加評級欄在Android工作室應用程序中的問題

我在做什麼錯?

XML文件:

<RatingBar 
     android:id="@+id/ratingBar" 
     style="@style/Widget.AppCompat.RatingBar.Small" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:numStars="5" 
     android:paddingBottom="5dp" 
     android:stepSize="1" /> 

    <TextView 
     android:id="@+id/value" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="Value: " /> 

    <Button 
     android:id="@+id/ratingButton" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_gravity="center" 
     android:background="#ff6600" 
     android:elevation="10dp" 
     android:padding="7dp" 
     android:text="Submit Rating" 
     android:textSize="12sp" /> 

MainActivity.java 

    public class MainActivity extends AppCompatActivity { 

    RatingBar ratingBar; 
    Button btn; 


@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setIcon(R.drawable.ic_launcher); 

    ratingBar=(RatingBar)findViewById(R.id.ratingBar1); 
    btn=(Button)findViewById(R.id.button1); 

    // Set ChangeListener to Rating Bar 
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
     public void onRatingChanged(RatingBar ratingBar, float rating, 
            boolean fromUser) { 

      Toast.makeText(getApplicationContext(),"Your Selected Ratings : " + String.valueOf(rating),Toast.LENGTH_LONG).show(); 

     } 
    }); 

    btn.setOnClickListener(new View.OnClickListener() { 


     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      float rating=ratingBar.getRating(); 
      Toast.makeText(getApplicationContext(),"Your Selected Ratings : " + String.valueOf(rating),Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 


    public void openAppetizersList(View v){ 

     if(v.getId() == R.id.appetizers){ 
      Intent i = new Intent(MainActivity.this, AppetizersActivity.class); 
      startActivity(i); 

     } 
    } 

    public void openDishList(View v){ 

     if(v.getId() == R.id.maindish){ 
      Intent i = new Intent(MainActivity.this, DishActivity.class); 
      startActivity(i); 

     } 
    } 

    public void openSidesList(View v){ 

     if(v.getId() == R.id.sides){ 
      Intent i = new Intent(MainActivity.this, SidesActivity.class); 
      startActivity(i); 

     } 
    } 

    public void openDessertsList(View v) { 

     if (v.getId() == R.id.desserts) { 
      Intent i = new Intent(MainActivity.this, DessertsActivity.class); 
      startActivity(i); 

     } 
    } 

    public void openBonusButton(View v) { 

     if (v.getId() == R.id.bonus) { 
      Intent i = new Intent(MainActivity.this, BonusActivity.class); 
      startActivity(i); 

     } 
    } 

    public void openTextClick(View v) { 

     if (v.getId() == R.id.textClick) { 
      Intent i = new Intent(MainActivity.this, BonusActivity.class); 
      startActivity(i); 

     } 
    } 



    } 
+0

你也許有一個崩潰日誌?這會讓我們更容易找到問題:) –

+0

不...這是我得到的:9:11:26 AM執行任務:[:app:assembleDebug] 9:11:28 AM Gradle build在2秒內完成3個錯誤ms 9:12:54 AM執行任務:[:app:assembleDebug] 9:12:55 AM在940ms內完成3個錯誤的Gradle構建 9:13:30 AM執行任務:[:app:assembleDebug] 9:13:33 AM Gradle編譯完成時間爲2s 983ms ...它只是表示應用程序不停地運行 – user6889089

+0

嗯,這來自Android Studio事件日誌。當您在調試模式下運行應用程序時,您可以在[Android監視器](https://developer.android.com/studio/profile/monitor.html)中看到來自應用程序的調試信息 - 應該在那裏。 –

回答

0

據崩潰日誌,你正在試圖做setOnRatingBarChangeListener一個空物體上,這意味着你的ratingBar變量爲空。讓我們看一下它的聲明:

ratingBar=(RatingBar)findViewById(R.id.ratingBar1); 

然而,在佈局XML中,我們看到

<RatingBar 
    android:id="@+id/ratingBar" 
    ... /> 

含義有兩個ID( 「ratingBar1」 和 「的RatingBar」)不匹配。您可以通過更改其中一個來匹配另一個來解決此問題。例如,ratingBar

ratingBar=(RatingBar)findViewById(R.id.ratingBar); 

而在XML:

<RatingBar 
    android:id="@+id/ratingBar" 
    ... /> 
+0

我改變了......它仍然在崩潰 – user6889089

+0

嗯,它是同樣的崩潰,雖然?你檢查了日誌嗎? –

+0

我在正確的位置添加了代碼。當我刪除它的所有應用程序的作品,所以這是這個部分的東西。對不起,我是這個新手。 – user6889089

相關問題