Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有scala setAdapter InvocationTargetException的Android_Android_Scala_Listview_Simpleadapter - Fatal编程技术网

带有scala setAdapter InvocationTargetException的Android

带有scala setAdapter InvocationTargetException的Android,android,scala,listview,simpleadapter,Android,Scala,Listview,Simpleadapter,我正在尝试制作包含ListView的android应用程序。现在我有: PersonSearchResult.scala: class PersonSearchResult extends ActionBarActivity { def policy:StrictMode.ThreadPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build() StrictMode.setThreadPolicy(policy)

我正在尝试制作包含ListView的android应用程序。现在我有:

PersonSearchResult.scala:

class PersonSearchResult extends ActionBarActivity {

  def policy:StrictMode.ThreadPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build()
 StrictMode.setThreadPolicy(policy)

protected override def onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.person_item)
def img:Int = R.drawable.icon_alert

val intent: Intent = getIntent()
val massage: String = makeJson(intent.getExtras())
val url:String = """http://www.some.url/?info=""" + URLEncoder.encode(massage, "utf-8")
val data:JSONArray = getSearchResult(url)
val dataLength = data.length

val dataList: ArrayList[HashMap[String, Any]] = new ArrayList[HashMap[String, Any]](dataLength)

for( i <- 0 to (dataLength - 1)){
  val m = new HashMap[String, Any]()
  m.put("name", data.getJSONObject(i).getString("name"))
  m.put("midname", data.getJSONObject(i).getString("midname"))
  m.put("lastname", data.getJSONObject(i).getString("lastname"))
  if (data.getJSONObject(i).getBoolean("wanted"))
    m.put("wanted", img)
  else
    m.put("wanted", 0)
  dataList.add(m)
}

val from = Array("name","midname","lastname", "wanted")
val to = Array(R.id.pers_name, R.id.pers_midname, R.id.pers_lastname,R.id.isWanted)

val adapter: SimpleAdapter = new SimpleAdapter(this, dataList, R.layout.person_item,from, to)

val listView: ListView = findViewById(R.id.listview).asInstanceOf[ListView]
listView.setAdapter(adapter)


listView.setOnItemClickListener( new OnItemClickListener() {
    def onItemClick(parent: AdapterView[_], view: View, position: Int, id: Long) : Unit = {
        val info = data.getJSONObject(id.asInstanceOf[Int])
        val intent: Intent = new Intent(PersonSearchResult.this, classOf[PersonProfile])
        intent.putExtra("info",info.toString())
        startActivity(intent)
    }
})

 }


override def onCreateOptionsMenu(menu: Menu): Boolean =  {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.person_search_result, menu)
    true
}

override def 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.
    if (item.getItemId() == R.id.action_settings) {
        true
    }
    super.onOptionsItemSelected(item)
}

/**
 * A placeholder fragment containing a simple view.
 */
class PlaceholderFragment extends Fragment {

    override def onCreateView(inflater: LayoutInflater, container:  ViewGroup, savedInstanceState: Bundle): View = {
        inflater.inflate(R.layout.fragment_person_search_result, container, false)
    }
}

}
class PersonSearchResult扩展了ActionBarActivity{
def policy:StrictMode.ThreadPolicy=new StrictMode.ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(策略)
受保护的重写定义onCreate(savedInstanceState:Bundle){
super.onCreate(savedInstanceState)
setContentView(R.layout.person\u项)
def img:Int=R.drawable.icon\u警报
val intent:intent=getIntent()
val按摩:String=makeJson(intent.getExtras())
val url:String=“”http://www.some.url/?info=“+URLEncoder.encode(按摩,“utf-8”)
val数据:JSONArray=getSearchResult(url)
val dataLength=data.length
val dataList:ArrayList[HashMap[String,Any]]=新ArrayList[HashMap[String,Any]](数据长度)

对于(i而言,这是来自stacktrace的重要线索:

...
Caused by: java.lang.InstantiationException: can't instantiate class mephi.BukarevP.client.MainActivity$PlaceholderFragment; no empty constructor
...

Android需要一种方法来自行重新实例化片段。因此,它要求每个片段都有一个空构造函数。您的片段有一个空构造函数,但Android仍然无法调用它。原因是您将其定义为一个内部类,它只能与周围类的一个实例一起存在。而Android,不知道如何在片段是内部类时实例化它。在Java中,您可以通过将片段设置为静态内部类来解决此问题。在Scala中,您应该将片段移出活动或将其嵌套在活动的同伴中。

检查您的项目目标sdk级别和ActionBarActivity需要sdk级别。@MdAbdulGafur符合AndroidManifest.xml targetSdkVersion=“19”。据我所知,ActionBarActivity需要18。
04-05 20:39:33.270: D/libEGL(20346): loaded /system/lib/egl/libEGL_mali.so
04-05 20:39:33.275: D/libEGL(20346): loaded /system/lib/egl/libGLESv1_CM_mali.so
04-05 20:39:33.275: D/libEGL(20346): loaded /system/lib/egl/libGLESv2_mali.so
04-05 20:39:33.280: E/(20346): Device driver API match
04-05 20:39:33.280: E/(20346): Device driver API version: 17
04-05 20:39:33.280: E/(20346): User space API version: 17 
04-05 20:39:33.280: E/(20346): mali: REVISION=Linux-r3p1-01rel1 BUILD_DATE=Fri May 10 18:36:49 KST 2013 
04-05 20:39:33.325: D/OpenGLRenderer(20346): Enabling debug mode 0
04-05 20:39:43.835: D/AndroidRuntime(20346): Shutting down VM
04-05 20:39:43.835: W/dalvikvm(20346): threadid=1: thread exiting with uncaught exception (group=0x40fe1930)
04-05 20:39:43.840: E/AndroidRuntime(20346): FATAL EXCEPTION: main
04-05 20:39:43.840: E/AndroidRuntime(20346): java.lang.RuntimeException: Unable to start activity ComponentInfo{mephi.BukarevP.client/mephi.BukarevP.client.PersonSearchResult}: java.lang.NullPointerException
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.ActivityThread.access$700(ActivityThread.java:154)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.os.Looper.loop(Looper.java:137)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.ActivityThread.main(ActivityThread.java:5306)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at java.lang.reflect.Method.invokeNative(Native Method)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at java.lang.reflect.Method.invoke(Method.java:511)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at dalvik.system.NativeStart.main(Native Method)
04-05 20:39:43.840: E/AndroidRuntime(20346): Caused by: java.lang.NullPointerException
04-05 20:39:43.840: E/AndroidRuntime(20346):    at mephi.BukarevP.client.PersonSearchResult.onCreate(PersonSearchResult.scala:65)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.Activity.performCreate(Activity.java:5255)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
04-05 20:39:43.840: E/AndroidRuntime(20346):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
04-05 20:39:43.840: E/AndroidRuntime(20346):    ... 11 more
04-05 20:40:28.640: I/Process(20346): Sending signal. PID: 20346 SIG: 9
04-05 20:40:28.800: D/dalvikvm(20656): newInstance failed: no <init>()
04-05 20:40:28.800: D/AndroidRuntime(20656): Shutting down VM
04-05 20:40:28.800: W/dalvikvm(20656): threadid=1: thread exiting with uncaught exception (group=0x40fe1930)
04-05 20:40:28.805: E/AndroidRuntime(20656): FATAL EXCEPTION: main
04-05 20:40:28.805: E/AndroidRuntime(20656): java.lang.RuntimeException: Unable to start activity ComponentInfo{mephi.BukarevP.client/mephi.BukarevP.client.MainActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment mephi.BukarevP.client.MainActivity$PlaceholderFragment: make sure class name exists, is public, and has an empty constructor that is public
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.ActivityThread.access$700(ActivityThread.java:154)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.os.Looper.loop(Looper.java:137)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.ActivityThread.main(ActivityThread.java:5306)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at java.lang.reflect.Method.invokeNative(Native Method)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at java.lang.reflect.Method.invoke(Method.java:511)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at dalvik.system.NativeStart.main(Native Method)
04-05 20:40:28.805: E/AndroidRuntime(20656): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment mephi.BukarevP.client.MainActivity$PlaceholderFragment: make sure class name exists, is public, and has an empty constructor that is public
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.support.v4.app.Fragment.instantiate(Fragment.java:413)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.support.v4.app.FragmentState.instantiate(Fragment.java:97)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1801)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:213)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:97)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at mephi.BukarevP.client.MainActivity.onCreate(MainActivity.scala:19)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.Activity.performCreate(Activity.java:5255)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
04-05 20:40:28.805: E/AndroidRuntime(20656):    ... 11 more
04-05 20:40:28.805: E/AndroidRuntime(20656): Caused by: java.lang.InstantiationException: can't instantiate class mephi.BukarevP.client.MainActivity$PlaceholderFragment; no empty constructor
04-05 20:40:28.805: E/AndroidRuntime(20656):    at java.lang.Class.newInstanceImpl(Native Method)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at java.lang.Class.newInstance(Class.java:1319)
04-05 20:40:28.805: E/AndroidRuntime(20656):    at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
04-05 20:40:28.805: E/AndroidRuntime(20656):    ... 19 more
...
Caused by: java.lang.InstantiationException: can't instantiate class mephi.BukarevP.client.MainActivity$PlaceholderFragment; no empty constructor
...