Advertisement
ipdan4ik

[lb6] ItemActivity.kt

Apr 2nd, 2021
787
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.43 KB | None | 0 0
  1. package com.example.lb5
  2.  
  3. import android.app.Activity
  4. import android.content.Intent
  5. import android.graphics.BitmapFactory
  6. import androidx.appcompat.app.AppCompatActivity
  7. import android.os.Bundle
  8. import android.os.Environment
  9. import android.provider.MediaStore
  10. import android.view.Menu
  11. import android.view.MenuItem
  12. import android.widget.EditText
  13. import android.widget.ImageView
  14. import androidx.core.content.FileProvider
  15. import java.io.File
  16.  
  17. class ItemActivity : AppCompatActivity() {
  18.     private var index = 0
  19.     private lateinit var item: Item
  20.     private var currentPhotoPath: String = ""
  21.     override fun onCreate(savedInstanceState: Bundle?) {
  22.         super.onCreate(savedInstanceState)
  23.         setContentView(R.layout.activity_item)
  24.  
  25.         val intent = intent
  26.         index = intent?.getIntExtra("index", -1) ?: -1
  27.         item = intent?.getParcelableExtra("item") ?: Item()
  28.         val editTitle = findViewById<EditText>(R.id.title)
  29.         editTitle.setText(item.title)
  30.         val editKind = findViewById<EditText>(R.id.kind)
  31.         editKind.setText(item.kind)
  32.         val editPrice = findViewById<EditText>(R.id.price)
  33.         editPrice.setText(item.price.toString())
  34.         val editWeight = findViewById<EditText>(R.id.weight)
  35.         editWeight.setText(item.weight.toString())
  36.         if (item.photo != "") {
  37.             val bmp = BitmapFactory.decodeFile((item.photo))
  38.             findViewById<ImageView>(R.id.ivPhoto).setImageBitmap(bmp)
  39.             currentPhotoPath = item.photo
  40.         }
  41.  
  42.  
  43.         supportActionBar?.setDisplayHomeAsUpEnabled(true)
  44.     }
  45.     override fun onCreateOptionsMenu(menu: Menu?): Boolean {
  46.         menuInflater.inflate(R.menu.add_item, menu)
  47.         return super.onCreateOptionsMenu(menu)
  48.     }
  49.     override fun onOptionsItemSelected(item: MenuItem): Boolean {
  50.         if (item.itemId == android.R.id.home) {
  51.             finish()
  52.             return true
  53.         }
  54.         if (item.itemId == R.id.action_save) {
  55.             this.item.photo = currentPhotoPath
  56.             this.item.title = findViewById<EditText>(R.id.title).text.toString()
  57.             this.item.kind = findViewById<EditText>(R.id.kind).text.toString()
  58.             this.item.price = findViewById<EditText>(R.id.price).text.toString().toDouble()
  59.             this.item.weight = findViewById<EditText>(R.id.weight).text.toString().toDouble()
  60.             val intent = Intent()
  61.             intent.putExtra("index", index)
  62.             intent.putExtra("item", this.item)
  63.             setResult(Activity.RESULT_OK, intent)
  64.  
  65.             finish()
  66.             return true
  67.         }
  68.         if (item.itemId == R.id.action_photo) {
  69.         // Формирование имени временного файла
  70.             val photoFile = File.createTempFile(
  71.                     "photo",
  72.                     ".jpg",
  73.                     getExternalFilesDir(Environment.DIRECTORY_PICTURES))
  74.          // Сохранение имени для будущего использования
  75.             currentPhotoPath = photoFile.absolutePath
  76.         // Получение провайдера файла, чтобы камера могла
  77.         // записать файл в нашу частную папку
  78.             val photoURI = FileProvider.getUriForFile(
  79.                     this,
  80.                     BuildConfig.APPLICATION_ID,
  81.                     photoFile)
  82.         // Формирование запроса на фото
  83.             val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
  84.             intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
  85.             startActivityForResult(intent, 0)
  86.             return true
  87.         }
  88.         if (item.itemId == R.id.action_delete) {
  89.             val intent = Intent()
  90.             intent.putExtra("index", index)
  91.             intent.putExtra("item", this.item)
  92.             setResult(111 , intent)
  93.  
  94.             finish()
  95.             return true
  96.         }
  97.  
  98.         return super.onOptionsItemSelected(item)
  99.     }
  100.  
  101.     override fun onActivityResult(requestCode: Int, resultCode: Int,
  102.                                   intent: Intent?) {
  103.         super.onActivityResult(requestCode, resultCode, intent)
  104.         if (resultCode == Activity.RESULT_OK) {
  105.             val bmp = BitmapFactory.decodeFile(currentPhotoPath)
  106.             val ivPhoto = findViewById<ImageView>(R.id.ivPhoto)
  107.             ivPhoto.setImageBitmap(bmp)
  108.         }
  109.         else
  110.             currentPhotoPath = ""
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement