1
私はスカラで開発されたアンドロイドアプリを開発しようとしています。 しかし、私は誰も私を助けたり、私に取得するにはどのように良いチュートリアルを与えることができることを望むコンパイルスカラカントでアンドロイドにバインドされたサービスBinder.getServiceが動作する
[ERROR] TestService.scala:49: error: type mismatch;
[INFO] found : .services.TestService.type (with underlying type object .services.TestService)
[INFO] required: .services.TestService
サービス
class TestService extends Service
{
val mBinder: IBinder = new TestService.TestServiceBinder
val list = List("Linux", "Android", "iOs", "WP")
override def onCreate
{
Toast.makeText(this, TAG + " created", Toast.LENGTH_LONG).show;
Log.d(TAG, "onCreate");
}
override def onDestroy
{
Toast.makeText(this, TAG + " destroyed", Toast.LENGTH_LONG).show;
Log.d(TAG, "onCreate");
}
override def onStart(intent: Intent, startid: Int)
{
Toast.makeText(this, TAG + " started", Toast.LENGTH_LONG).show;
Log.d(TAG, "onStart");
}
override def onBind(intent: Intent): IBinder = mBinder
def getList: List[String] = list
}
object TestService
{
class TestServiceBinder extends Binder
{
def getService: TestService = TestService.this
}
}
活動
class HomeActivity extends Activity with FindView
{
private final val TAG = "HomeActivity"
lazy val buttonTest: Button = findView[Button](R.id.testButton)
private var mService: TestService = _
private var mBound: Boolean = false
val mConnection: ServiceConnection = new TestServiceConnection
override def onCreate(savedInstanceState: Bundle)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
buttonTest.setOnClickListener(ButtonTestOnClickListener)
Log.i(TAG, "onCreate")
}
override def onStart
{
super.onStart
val intent: Intent = new Intent(this, classOf[TestService])
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
override def onStop
{
super.onStop
if(mBound)
{
unbindService(mConnection)
mBound = false
}
}
object ButtonTestOnClickListener extends View.OnClickListener
{
def onClick(v: View)
{
if(mBound)
{
Toast.makeText(v.getContext, mService.getList.toString, Toast.LENGTH_LONG).show
}
}
}
class TestServiceConnection extends ServiceConnection
{
def onServiceConnected(className: ComponentName, service: IBinder)
{
val binder = (new TestService.TestServiceBinder).asInstanceOf[TestServiceBinder]
mService = binder.getService
mBound = true
}
def onServiceDisconnected(className: ComponentName)
{
mBound = false
}
}
}
中にエラーが発生しますスカラの束縛されたサービスが働きます。 ご協力いただきありがとうございます。 クリス
EDITライン49は、次のとおりです。def getService: TestService = TestService.this
新しいTestServiceは私に新しいインスタンスを与えます。私はアンドロイドOSによってアンドロイドサービスが開始され、バインダーはシングルトンのようなものだと理解しています。私が試してみるのは、ここに記載されているようにアンドロイドサービスを実装することです:http://developer.android.com/guide/topics/fundamentals/bound-services.html – kitingChris
私のEDITを見ましたか? – Christian
は、どちらもうまくいきませんでした。( あまりにも時間がかかりすぎて、私はJavaに落ちてしまい、私のscala部分が持っているfunktionalityを模倣しようとしています... – kitingChris