جار التحديث ...
جار التحديث ...

إستدعاء function من activity أخرى

  • 0

السلام عليكم ... من فضلكم أريد مساعدة لدي هذه الدالة التي تعمل على تفقد حالة الأنترنت موضوعة في MainActivity و هي تعمل بشكل ممتاز:

fun checkConnectivity(){

    val cm=getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val activeNetwork =cm.activeNetworkInfo
    val isConnected=activeNetwork != null && activeNetwork.isConnectedOrConnecting}

 

1-الآن أريد إتدعائها من عدة activities أخرى ... جربت الكثير من الطرق لكن لم تفلح معي .

هذا كود الأكتيفيتي ExodyaActivity و أريد أن أقوم بإستدعائها من الأكتفيتي MainActivity إلى هنا: (problem1)

class ExodyaActivity : AppCompatActivity() {

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

    //Problem1: failed to call the checkConnectivity() from MainActivity

    val myWebview   = ExoWeb
    var ProgressBar = progressBar
    var FrameLayout = frameLayout
    var TextView  = loadPrs

    myWebview.visibility = View.GONE
    frameLayout.visibility = View.GONE
    loadLinear.visibility = View.GONE

    //webview
    myWebview.webViewClient= WebViewClient()
    myWebview.settings.javaScriptEnabled=true
    myWebview.loadUrl("url")

    ProgressBar.max = 100

    myWebview.webChromeClient = object : WebChromeClient() {
        override fun onProgressChanged(view: WebView, progress: Int) {

            // Problem2: checkConnectivity()  didn't work here !!!!

            progressBar.progress = progress
            if(progress < 90) {
                loadPrs.text = " %" + progress
                myWebview.visibility = View.GONE
                frameLayout.visibility = View.VISIBLE
                loadLinear.visibility = View.VISIBLE
            }
            if (progress == 100) {

                FrameLayout.visibility = View.GONE
                loadLinear.visibility = View.GONE
                myWebview.visibility = View.VISIBLE
            }
        }
    }

}
// onBackPressed (back in webview history)
 override fun onBackPressed() {
     var myWebview   = ExoWeb
    if (myWebview.canGoBack()) {
        myWebview.goBack()
    } else {
         super.onBackPressed()
            Toast.makeText(this,"See You Next Time!",Toast.LENGTH_SHORT).show()
             }
        }

}

و بعد إستدعائها أريد أن أقوم بالتحقق من النت (يعني إستخدامها) داخل onProgressChanged (problem2)

 

أتمنى المساعدة ... و شكرا

إجابات المستخدمين (3)


  • مسؤول
  • عضو جديد
  • قبل أشهر 8

1-إنشاء ملف كوتلن جديد , نسميه مثلا: Utils.kt

2-وضع الدالة (function) التي نريد  بداخلها و وضع لها context كبراميتر مثال :

fun checkConnectivity(ctx: Context): Boolean {
    val cm = ctx.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val activeNetwork =cm.activeNetworkInfo
    return activeNetwork != null && activeNetwork.isConnectedOrConnecting
} 

3-نقوم بإستدعاء الدالة  من أي أكتيفيتي أخرى هكذا :

checkConnectivity([email protected]إسم الأكتفيتي)

 


  • 0
رد على التعليق (0)

الردود :


لا يوجد ردود بعد


سجل الدخول لاضافة رد

لست خبير في برمجة الهواتف الذكية , لكن بحثت في الويب ووجدت هذه الاجابة على ستاك أوفرفلو ربما تكون مفيدة لك ...

https://stackoverflow.com/questions/19666572/how-to-call-a-method-in-another-activity-from-activity

 


  • 0
رد على التعليق (1)

الردود :


<pre class="language-markup"><code>شكرا لكن وجدت طريقة أخرى و سأضعهاا هنا لكي يستفيد الآخرون أيضا​</code></pre> <p>&nbsp;</p>


سجل الدخول لاضافة رد
سجل الدخول لاضافة اجابة جديدة