hunachi’s diary

Android studio でお勉強してます。

directory名が変だけど・・・:;(∩´﹏`∩);:

new projectを生成したら、へんなdirectory名がついてた:;(∩´﹏`∩);:

 

package com.hoge.${package_name}.view.view.MainActivity

 

私はviewフォルダの中にviewフォルダを作りたいんじゃないよー!

~*.view.hogeにしたいの!!

 Refactor->Rename

からじゃだめみたい....

某同学年先輩に聞いたところ直接Codeのpathをかえてみたら?って教えてもらった!

package com.hoge.${package_name}.view

import android.os.Bundle
import android.support.v7.app.AppCompatActivity

/**
* Created by hunachi on 7/24/2017.
*/
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}

そしたらできました。

うう感謝。

gson,retrofitで@Path

gson,retrofitで@Path(だけなのかはわからないけど,)使うとデフォルトでhoge="hoge"のようにダブルクォーテーションがつくので、

e.g.

hoge=hoge

という風に送りたいのに

hoge="hoge"

になるといった症状です(@Partの副作用?:;(∩´﹏`∩);:?)

stackoverflow.com

これのSolution2をしましょう。

retrofit = Retrofit.Builder()
.baseUrl("")
.addConverterFactory(StringConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()

「StringConverterFactoryはGsonConverterFactoryの前に入れる!!」って注意書きが書いてあるのでそれは守りましょうね。

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class 

 というerrorが出た・・・!

これはMainfest.xmlにerrorの原因となっているclassが<activity>として定義されて無いからである。

だから

<activity android:name=".view.${className}"/>

 を追加してあげよ!

MediaPlayer (BGM用)

rawファイル(自分でsrcの中に作る)に音楽ファイルをコピペした時のTemplate.

fun setUpMusic() : Boolean{
var fileCheck = false
try {
mediaPlayer = MediaPlayer.create(this,R.raw.cave1)
fileCheck = true
}catch (e : IOException){
e.printStackTrace()
}
return fileCheck
}

fun playMusic(){
mediaPlayer.start()
}

fun stopMusic(){
mediaPlayer.stop()
mediaPlayer.reset()
mediaPlayer.release()
}

 

https://akira-watson.com/android/audio-player.html

参考にしました。 

あと、どくぴー先輩が教えてくださりました。

ありがとうございました。

Overload resolution ambiguity (anko)

f:id:hanahanahunachi:20170715144840p:plain

Overload resolution ambiguity:ほげほげ

というerrorが出る

引数が一致している(全く同じ関数)が出てきて選びようがないじゃないかぁ!

結論...原因は

compile 'org.jetbrains.anko:anko-sdk15:0.9'
compile 'org.jetbrains.anko:anko-sdk19:0.8.3'

 versionの違うanko-sdkが2つあったからだった

15:0.9を消したらerrorが消えた。

ImageViewのidがerrorになる.

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return UI {
relativeLayout {
verticalLayout {
imageView{
setImageResource(R.drawable.kan_0)//here
padding = dip(10)
}
}
}
}.view
}

まあ上のところを

R.drawable.kan_0

 ではなく、

android.R.drawable.kan_0

 にしたらkan_0が認識されなかった.

何故か?たぶん私が思ってたところと違うと場所のdrawableを引っ張てきてたんだと思う.

import com.example.hunachi.${PACKAGE_NAME}.R

 をimportしようなって話でした.