2016-12-05 48 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

相关问题