Нет клавиатуры во фрагменте? - PullRequest
0 голосов
/ 25 августа 2018

В настоящее время я пытаюсь преобразовать свой активит во фрагменты.При этом я получаю несколько проблем.Моя первая и главная проблема заключается в том, что у SearchShop.kt нет клавиатуры в поле поиска.Моя вторая проблема - когда я пытаюсь использовать эмулятор на своем компьютере и использовать клавиатуру компьютера, я могу вводить значения, но это не запланирует FirebaseJob.И наконец, как я могу добавить во Фрагмент функциональность для Fab Button?

Grettings Losspost Основная активность:

package com.name.shocal

import android.content.Intent
import android.media.MediaPlayer
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.design.widget.NavigationView
import android.support.v4.view.GravityCompat
import android.support.v7.app.ActionBarDrawerToggle
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.LinearLayout
import android.widget.Toast
import com.google.android.gms.tasks.OnCompleteListener
import com.google.android.gms.tasks.Task
import com.google.firebase.auth.AuthResult
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.app_bar_main.*
import kotlinx.android.synthetic.main.content_main.*
import java.sql.DatabaseMetaData

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

    //AuthVariable for global use
private lateinit var myAuth : FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)


        val toggle = ActionBarDrawerToggle(
                this, drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
        drawer_layout.addDrawerListener(toggle)
        toggle.syncState()

        nav_view.setNavigationItemSelectedListener(this)

        val test = supportFragmentManager
        val frag  = LoginFragment()
        test.beginTransaction().replace(R.id.placeholder,frag).addToBackStack(null).commit()


        //Initializing FirebaseAuth Instance
        myAuth = FirebaseAuth.getInstance()




    }



    override fun onBackPressed() {
        if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
            drawer_layout.closeDrawer(GravityCompat.START)
        } else {
            super.onBackPressed()
        }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        when (item.itemId) {
            R.id.action_settings -> return true
            else -> return super.onOptionsItemSelected(item)
        }
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        // Handle navigation view item clicks here.

        when (item.itemId) {
            R.id.nav_addShop -> {
                //Activity to Add your Shop
                val addshopIntent = Intent(this,AddShopActivity::class.java)
                startActivity(addshopIntent)

            }
            R.id.nav_searchShop -> {
                //SearchActivity
                val searchShopIntent = Intent(this,SearchShop::class.java)
                startActivity(searchShopIntent)

            }
            R.id.nav_shopMap -> {
                //MapActivity
                val mapintent = Intent(this, ShopMap::class.java)
                startActivity(mapintent)


            }
            R.id.nav_manage -> {

            }
            R.id.nav_share -> {

            }
            R.id.nav_send -> {

                val test = supportFragmentManager
                val frag  = test()
                test.beginTransaction().replace(R.id.placeholder,frag).addToBackStack(null).commit()


            }
        }

        drawer_layout.closeDrawer(GravityCompat.START)
        return true
    }

}

SearchShopFragment:

package com.name.shocal

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.design.widget.NavigationView
import android.support.v4.app.Fragment
import android.support.v4.content.LocalBroadcastManager
import android.support.v4.view.GravityCompat
import android.support.v7.app.ActionBarDrawerToggle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.*
import android.widget.EditText
import com.firebase.jobdispatcher.FirebaseJobDispatcher
import com.firebase.jobdispatcher.GooglePlayDriver
import com.name.shocal.RecyclerAdapters.ShopSearchRecyclerAdapter
import com.name.shocal.Service.SearchShopFirebaseService

import kotlinx.android.synthetic.main.content_search_shop.*
import kotlinx.android.synthetic.main.app_bar_search_shop.*

class test : Fragment() {


    //Adding Variable for Recyclerview
    private var shop_list_adapter : RecyclerView.Adapter<ShopSearchRecyclerAdapter.ShopSearchViewHolder>? = null

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.content_search_shop,container,false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)

        //Integrating   RecyclerView
        val recyclerView = view?.findViewById<RecyclerView>(R.id.recyclerView_shop_search)
        recyclerView?.layoutManager = LinearLayoutManager(activity,LinearLayoutManager.VERTICAL,false)


        //Broadcast Receiver
        val myReceiver = object : BroadcastReceiver() {
            override fun onReceive(p0: Context?, p1: Intent?) {
                var data = p1?.getStringArrayListExtra("SHOP_RESULTS")
                Log.i("EXTRAS",data.toString())

                var shop_result_list = data
                Log.i("BROADCAST RECEIVER",shop_result_list.toString())
                shop_list_adapter = ShopSearchRecyclerAdapter(activity!!.applicationContext,shop_result_list!!)
                recyclerView?.adapter = shop_list_adapter


            }

        }
        //Getting data via Broadcast Manager

        LocalBroadcastManager.getInstance(activity!!.applicationContext).registerReceiver(myReceiver, IntentFilter("SearchDATA"))



        //Get the ID of the Textfield
        //val search_field = view?.findViewById<EditText>(R.id.search_textfield)
        //Detect if changed happen in the text Field
        search_textfield.addTextChangedListener(object:TextWatcher{

            override fun afterTextChanged(p0: Editable?) {

            }

            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

            }

            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                Log.i("TEXT","TextChanged")
                //Create an Dispatcher via GoogleService
                val fbDispatcher = FirebaseJobDispatcher(GooglePlayDriver(activity!!.applicationContext))

                //Bundle to pass data to Job
                var myExtraBundle = Bundle()
                myExtraBundle.putString("SEARCH_VALUE",search_textfield.text.toString())
                //Create the job with the necessary attributes
                var search_shop_job = fbDispatcher.newJobBuilder().setService(SearchShopFirebaseService::class.java).setTag("Search-Shop-Firebase").setExtras(myExtraBundle).build()
                //Start FirebaseJob
                Log.i("VALUES",search_textfield.text.toString())
                fbDispatcher.mustSchedule(search_shop_job)


            }

        })


    }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...