Home > front end >  Android - ActivityMainBinding shows me wrong activity
Android - ActivityMainBinding shows me wrong activity

Time:01-29

everyone. I'm trying to display a line chart in a full-screen activity. Unfortunately I can't do that. I always get to see my activity_main.xml layout. I also have my LineChart in it, within a CardView. Everything works fine in this activity. But as soon as I switch to activity_details_vitali.xml via a button, I don't see a line chart, just my main_activity. I think I have a wrong binding here. However, I can't find the error

class DetailsVitali : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_details_vitali)


    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
    setLineChartData()

}


private fun setLineChartData() {
    val linevalues = ArrayList<Entry>()
    linevalues.add(Entry(20f, 0.0F))
    linevalues.add(Entry(30f, 3.0F))
    linevalues.add(Entry(40f, 2.0F))
    linevalues.add(Entry(50f, 1.0F))
    linevalues.add(Entry(60f, 8.0F))
    linevalues.add(Entry(70f, 10.0F))
    linevalues.add(Entry(80f, 1.0F))
    linevalues.add(Entry(90f, 2.0F))
    linevalues.add(Entry(100f, 5.0F))
    linevalues.add(Entry(110f, 1.0F))
    linevalues.add(Entry(120f, 20.0F))
    linevalues.add(Entry(130f, 40.0F))
    linevalues.add(Entry(140f, 50.0F))

    val linedataset = LineDataSet(linevalues, "First")
    //We add features to our chart
    linedataset.color = resources.getColor(R.color.purple_200)

    linedataset.circleRadius = 5f
    linedataset.setDrawFilled(true)
    linedataset.valueTextSize = 10F
    linedataset.fillColor = resources.getColor(R.color.purple_500)
    linedataset.setMode(LineDataSet.Mode.CUBIC_BEZIER);

    //We connect our data to the UI Screen
    val data = LineData(linedataset)

    binding.getTheGraph.data = data
    binding.getTheGraph.setBackgroundColor(resources.getColor(R.color.white))
    binding.getTheGraph.animateXY(2000, 2000, Easing.EaseInCubic)

}

layout

<?xml version="1.0" encoding="utf-8"?>
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".DetailsVitali">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp"
        app:cardCornerRadius="10dp"
        android:elevation="20dp"
        android:layout_gravity="center_horizontal">

        <com.github.mikephil.charting.charts.LineChart
            android:id="@ id/graphDetail"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.cardview.widget.CardView>
 </LinearLayout>

</LinearLayout>

EDIT

And I also don't have access to the ID of my LineChart in the DetailsVitali.class. binding.ID.data = data is the ID is from the activity_main.xml.

CodePudding user response:

From your comment that your desired layout is defined in activity_details_vitali.xml, you should be loading ActivityDetailsVitaliBinding, not ActivityMainBinding.

And as mentioned by @ARiF, you can remove the first call to setContentView since you are overwriting it with the second call to setContentView.

  •  Tags:  
  • Related