在Kotlin(Android)中创建活动的问题。

huangapple 未分类评论46阅读模式
英文:

Problem with the activity creation in Kotlin (Android)

问题

package com.example.example

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.Layout
import android.util.Log
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import androidx.navigation.Navigation
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import com.example.example.ui.traffic.TrafficFragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import org.json.JSONObject
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    // ... (Companion object and other variable declarations)

    override fun onCreate(savedInstanceState: Bundle?) {

        // ... (Shared preferences and editor)

        Log.d("Test", "Eccomi qui--- $changeDataTraffic")
        editorMain.putString("changeDataTraffic", changeDataTraffic)
        editorMain.apply()

        url = sharedPreferences.getString("URL", "")
        token = sharedPreferences.getString("TOKEN", "")

        val queue = Volley.newRequestQueue(this)
        // ... (Traffic dashboard request)

        val queueIpBlockedPage = Volley.newRequestQueue(this)
        // ... (IP blocked request)

        val queueSearchTermsPage = Volley.newRequestQueue(this)
        // ... (Search terms request)

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val navView: BottomNavigationView = findViewById(R.id.nav_view)
        val navController = findNavController(R.id.nav_host_fragment)
        AppBarConfiguration(
            setOf(
                R.id.navigation_traffic,
                R.id.navigation_ipblocked,
                R.id.navigation_search_terms,
                R.id.navigation_settings
            )
        )
        navView.setupWithNavController(navController)
    }
}

请注意,由于你只要求返回代码的翻译部分,我只翻译了你提供的代码内容。如果你需要更多的帮助或解释,请随时提问。

英文:

I'm having an issue with an app in Android I'm creating. When the activity with its fragments is created data are not showed in the activity. I have to reload the activity a second time to have the data in their place. Then, every time I change data, I have to reload always a second time to have data shown properly.
I understood that I have to handle data before creating the view, but don't know how.
This is the code of the main activity:

package com.example.example

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.Layout
import android.util.Log
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import androidx.navigation.Navigation
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import com.example.example.ui.traffic.TrafficFragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import org.json.JSONObject
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    companion object{
        //ricarica pagina
        var pagina: Int = 0

        //controllo del login automatico
        var checkLog: String? = String()

        //url di example
        var url: String? = String()

        //variabili del login
        var dominio: String? = String()
        var token: String? = String()
        var nome: String? = String()
        var status: String? = String()
        var email: String? = String()

        //variabili traffic
        var totalClicksTraffic: String? = String()
        var totalBlockedTraffic: String? = String()
        var totalClickAdwordsTraffic: String? = String()
        var clickArray: List<TrafficClick> = arrayListOf()
        var clicksNumber: Int = 0
        var statusTraffic: String? = String()

        //variabili change button filter
        var changeDataTraffic: String? = String()
        var changeDataSearchTerms: String? = String()

        //variabili ipsblocked
        var statusIpBlocked: String? = String()
        var ipsNumber: Int = 0
        var ipsArray: List<IpListBlock> = arrayListOf()

        //variabili searchterms
        var statusSearchTerms: String? = String()
        var searchTermsLength: Int = 0
        var searchArray: List<SearchTermsList> = arrayListOf()
        var totalClicksSearch: String? = String()
        var totalBlockedSearch: String? = String()
        var totalClickAdwordsSearch: String? = String()
    }

    override fun onCreate(savedInstanceState: Bundle?) {


//            try {

            //dichiaro lo sharedpreferences
            val sharedPreferences = this.getSharedPreferences("TOKEN_FILE", Context.MODE_PRIVATE)

            //dichiato l'editor per modificare gli sharedpreferences
            var editorMain = sharedPreferences.edit()

            Log.d("Test", "Eccomi qui--- $changeDataTraffic")
            editorMain.putString("changeDataTraffic", changeDataTraffic)
            editorMain.apply()


            //porto l'url e il token in variabili globali in modo da poterli richiamare in caso di mancato context
            url = sharedPreferences.getString("URL", "")
            token = sharedPreferences.getString("TOKEN", "")

            //RICHIESTE PER LA DASHBOARD DI PAGINA TRAFFIC-------------------------------------------------------------

            //richiesta da fare con il volley
            val queue = Volley.newRequestQueue(this)

            val endPointTrafficDashboard = "homeApp?"

            val requestUrlTrafficDashboard = sharedPreferences.getString(
                "URL",
                ""
            ) + endPointTrafficDashboard + "token=" + sharedPreferences.getString(
                "TOKEN",
                ""
            ) + "&filter=" + changeDataTraffic

            val stringRequest = StringRequest(
                Request.Method.GET,
                requestUrlTrafficDashboard,
                Response.Listener<String> { response ->
                    Log.d("Test", "PERFETTO ---- $response")

                    val jsonObj: JSONObject = JSONObject(response.toString())

                    //prelevo le variabili del json array portandole in stringa
                    val status = jsonObj.getInt("status")
                    val clicks = jsonObj.getJSONArray("clicks")
                    val bloccati = jsonObj.getInt("bloccati")
                    val totalClicksAdwords = jsonObj.getInt("totalClicksAdwords")

                    statusTraffic = status.toString()

                    clicksNumber = clicks.length()


                    var clickString = clicks.toString()
                    Log.d("array", "$clickString")
                    Log.d("clicks", "$clicks")

                    for (i in 0 until clicks.length()) {
                        val item = clicks.getJSONObject(i)

                        Log.d("item", "$item")
                        Log.d("item", item.getString("id"))


                        var click = TrafficClick(
                            item.getString("id"),
                            item.getString("ip"),
                            item.getString("adwords"),
                            item.getString("browser"),
                            item.getString("keyword"),
                            item.getString("id_campaign"),
                            item.getString("os"),
                            item.getString("mobile"),
                            item.getString("guid"),
                            item.getString("referer"),
                            item.getString("from_referer"),
                            item.getString("organization"),
                            item.getString("data_creation"),
                            item.getString("data_update"),
                            item.getString("eliminato"),
                            item.getString("counter"),
                            item.getString("id_dominio"),
                            item.getString("id_geo_ip"),
                            item.getString("iso_code")
                        )

                        if (click.eliminato != null && click.eliminato != "") {
                            (clickArray!! as ArrayList).add(click)
                        }
                    }

                    Log.d("clicks", "$clickArray")

                    totalClicksTraffic = clicks.length().toString()
                    totalClickAdwordsTraffic = totalClicksAdwords.toString()
                    totalBlockedTraffic = bloccati.toString()

                },

                Response.ErrorListener { response ->
                    Log.d("Test", "ERRORE ---- $response")


                }
            )
            //aggiunta al queue della stringa precedentemente formata
            queue.add(stringRequest)
            Log.d("Test", "URL ---- $requestUrlTrafficDashboard")
            Log.d("Test", "CHANGEDATA ---- $changeDataTraffic")

            //FINE DELLA DASHBOARD DI PAGINA TRAFFIC------------------------------------------------------------------- FINE FINE FINE

            //RICHIESTE PER LA PAGINA IPBLOCKED------------------------------------------------------------------------

            //richiesta da fare con il volley
            val queueIpBlockedPage = Volley.newRequestQueue(this)

            val endPointIpBlockedPage = "listIpBlocked?"

            val requestUrlIpBlockedPage = sharedPreferences.getString(
                "URL",
                ""
            ) + endPointIpBlockedPage + "token=" + sharedPreferences.getString("TOKEN", "")

            val stringRequestIpBlocked = StringRequest(
                Request.Method.GET,
                requestUrlIpBlockedPage,
                Response.Listener<String> { response ->
                    Log.d("TestIp", "PERFETTO IP ---- $response")

                    val jsonObj: JSONObject = JSONObject(response.toString())

                    //prelevo le variabili del json array portandole in stringa
                    val status = jsonObj.getInt("status")
                    val ips = jsonObj.getJSONArray("ips")

                    statusIpBlocked = status.toString()

                    ipsNumber = ips.length()

                    var ipsString = ips.toString()
                    Log.d("array", "$ipsString")
                    Log.d("ips", "$ips")

                    for (i in 0 until ips.length()) {
                        val item = ips.getJSONObject(i)
                        Log.d("item", "$item")
                        Log.d("item", item.getString("id"))

                        var ip = IpListBlock(
                            item.getInt("id"),
                            item.getInt("id_user"),
                            item.getInt("id_dominio"),
                            item.getInt("id_criterion"),
                            item.getInt("id_adwords_campaign"),
                            item.getInt("id_adwords_customer"),
                            item.getString("ip"),
                            item.getString("trigger"),
                            item.getString("created_at"),
                            item.getString("removal_date"),
                            item.getString("unlimited"),
                            item.getString("updated_at"),
                            item.getString("deleted_at"),
                            item.getInt("id_click"),
                            item.getString("organization"),
                            item.getString("iso_code")

                        )


                        (ipsArray!! as ArrayList).add(ip)
                    }

                    Log.d("ips", "$ipsArray")

                },

                Response.ErrorListener { response ->
                    Log.d("TestIp", "ERRORE IP ---- $response")

                }
            )
            //aggiunta al queue della stringa precedentemente formata
            queueIpBlockedPage.add(stringRequestIpBlocked)
            Log.d("TestIp", "URL ---- $requestUrlIpBlockedPage")

            //FINE PER LA PAGINA IPBLOCKED-----------------------------------------------------------------------------FINE FINE FINE

            //RICHIESTE PER LA PAGINA SEARCH TERMS---------------------------------------------------------------------

            //richiesta da fare con il volley
            val queueSearchTermsPage = Volley.newRequestQueue(this)

            val endPointSearchTermsPage = "reportApp?"

            val requestUrlSearchTermsPage = sharedPreferences.getString(
                "URL",
                ""
            ) + endPointSearchTermsPage + "token=" + sharedPreferences.getString(
                "TOKEN",
                ""
            ) + "&filter=" + changeDataSearchTerms

            val stringRequestSearchTerms = StringRequest(
                Request.Method.GET,
                requestUrlSearchTermsPage,
                Response.Listener<String> { response ->
                    Log.d("TestSearchTerms", "PERFETTO SEARCH ---- $response")

                    val jsonObj: JSONObject = JSONObject(response.toString())

                    //prelevo le variabili del json array portandole in stringa
                    val statusSearchTerms = jsonObj.getInt("status")
                    val searchTerms = jsonObj.getJSONArray("searchTerms")
                    val clicks = jsonObj.getInt("clicks")
                    val bloccati = jsonObj.getInt("bloccati")
                    val totalClickAdwords = jsonObj.getInt("bloccati")

                    MainActivity.statusSearchTerms = statusSearchTerms.toString()
                    totalClicksSearch = clicks.toString()
                    totalBlockedSearch = bloccati.toString()
                    totalClickAdwordsSearch = totalClickAdwords.toString()

                    searchTermsLength = searchTerms.length()

                    var searchTermsString = searchTerms.toString()
                    Log.d("array", "$searchTermsString")
                    Log.d("search", "$searchTerms")

                    for (i in 0 until searchTerms.length()) {
                        val item = searchTerms.getJSONObject(i)
                        Log.d("item", "$item")
                        Log.d("item", item.getString("id"))

                        var searchTerm = SearchTermsList(
                            item.getInt("id"),
                            item.getInt("id_user"),
                            item.getInt("id_adwords_customer"),
                            item.getInt("id_adwords_campaign"),
                            item.getString("campaign"),
                            item.getString("search_term"),
                            item.getString("keyword"),
                            item.getInt("keyword_id"),
                            item.getInt("clicks"),
                            item.getInt("impressions"),
                            item.getInt("interactions"),
                            item.getString("interactions_type"),
                            item.getInt("conversions"),
                            item.getInt("cost_conv"),
                            item.getInt("total_conv"),
                            item.getInt("cost"),
                            item.getInt("avg_cpv"),
                            item.getString("currency"),
                            item.getString("device"),
                            item.getString("date"),
                            item.getString("created_at"),
                            item.getString("updated_at"),
                            item.getString("deleted_at")
                        )


                        (searchArray!! as ArrayList).add(searchTerm)
                    }

                    Log.d("search", "$searchArray")

                },

                Response.ErrorListener { response ->
                    Log.d("TesSearch", "ERRORE SEARCH ---- $response")

                }
            )

            //aggiunta al queue della stringa precedentemente formata
            queueSearchTermsPage.add(stringRequestSearchTerms)
            Log.d("TestSearch", "URL ---- $requestUrlSearchTermsPage")

            //FINE DELLA PAGINA SEARCH TERMS---------------------------------------------------------------------------FINE FINE FINE

            //RICHIESTE PER LA PAGINA SETTINGS-------------------------------------------------------------------------
            //FINE DELLA PAGINA SETTINGS-------------------------------------------------------------------------------FINE FINE FINE
  
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //appbar per la navigazione tra le pagine
        val navView: BottomNavigationView = findViewById(R.id.nav_view)
        val navController = findNavController(R.id.nav_host_fragment)
        AppBarConfiguration(
            setOf(
                R.id.navigation_traffic,
                R.id.navigation_ipblocked,
                R.id.navigation_search_terms,
                R.id.navigation_settings
            )
        )
        navView.setupWithNavController(navController)


    }


}

huangapple
  • 本文由 发表于 2020年4月9日 17:22:27
  • 转载请务必保留本文链接:https://java.coder-hub.com/61117862.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定