{"id":2574,"date":"2022-08-30T15:26:00","date_gmt":"2022-08-30T15:26:00","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/02\/03\/super-simple-timepicker-implementation-force-closes-on-line-74-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:26:00","modified_gmt":"2022-08-30T15:26:00","slug":"super-simple-timepicker-implementation-force-closes-on-line-74-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/super-simple-timepicker-implementation-force-closes-on-line-74-collection-of-common-programming-errors\/","title":{"rendered":"SUPER Simple TimePicker Implementation &#8211; Force Closes on Line 74-Collection of common programming errors"},"content":{"rendered":"<p>I&#8217;m really not sure what I&#8217;m doing wrong at this point&#8230; im trying to vew data stored by the time picker &#8211; but every time I run the application I get force close errors.<\/p>\n<p>P.S.<\/p>\n<p>It appears the issue is stemming from Line 74 in View Country.java<\/p>\n<p>timeTv.setCurrentHour(result.getInt(timeIndex));<\/p>\n<p>DATA OUT &#8211; JAVA:<\/p>\n<pre><code>import android.app.Activity;\nimport android.app.AlertDialog;\nimport android.content.DialogInterface;\nimport android.content.Intent;\nimport android.database.Cursor;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.view.Menu;\nimport android.view.MenuInflater;\nimport android.view.MenuItem;\nimport android.widget.TextView;\nimport android.widget.TimePicker;\n\npublic class ViewCountry extends Activity {\n\n   private long rowID;\n   private TextView nameTv;\n   private TextView capTv;\n   private TextView codeTv; \n   private TimePicker timeTv; \n\n   @Override\n   public void onCreate(Bundle savedInstanceState) \n   {\n      super.onCreate(savedInstanceState);\n      setContentView(R.layout.view_country);\n\n      setUpViews();\n      Bundle extras = getIntent().getExtras();\n      rowID = extras.getLong(CountryList.ROW_ID); \n   }\n\n   private void setUpViews() {\n       nameTv = (TextView) findViewById(R.id.nameText);\n       capTv = (TextView) findViewById(R.id.capText);\n       timeTv = (TimePicker) findViewById(R.id.timePicker1);\n       codeTv = (TextView) findViewById(R.id.codeText);\n   }\n\n   @Override\n   protected void onResume()\n   {\n      super.onResume();\n      new LoadContacts().execute(rowID);\n   } \n\n   private class LoadContacts extends AsyncTask \n   {\n      DatabaseConnector dbConnector = new DatabaseConnector(ViewCountry.this);\n\n      @Override\n      protected Cursor doInBackground(Long... params)\n      {\n         dbConnector.open();\n         return dbConnector.getOneContact(params[0]);\n      } \n\n      @Override\n      protected void onPostExecute(Cursor result)\n      {\n         super.onPostExecute(result);\n\n         result.moveToFirst();\n         \/\/ get the column index for each data item\n         int nameIndex = result.getColumnIndex(\"name\");\n         int capIndex = result.getColumnIndex(\"cap\");\n         int codeIndex = result.getColumnIndex(\"code\");\n         int timeIndex = result.getColumnIndex(\"time\");\n\n         nameTv.setText(result.getString(nameIndex));\n         capTv.setText(result.getString(capIndex));\n         timeTv.setCurrentHour(result.getInt(timeIndex));\n         codeTv.setText(result.getString(codeIndex));\n\n         result.close();\n         dbConnector.close();\n      }\n   } \n\n\n   @Override\n   public boolean onCreateOptionsMenu(Menu menu) \n   {\n      super.onCreateOptionsMenu(menu);\n      MenuInflater inflater = getMenuInflater();\n      inflater.inflate(R.menu.view_country_menu, menu);\n      return true;\n   }\n\n   @Override\n   public boolean onOptionsItemSelected(MenuItem item) \n   {\n      switch (item.getItemId())\n      {\n         case R.id.editItem:\n            Intent addEditContact =\n               new Intent(this, AddEditCountry.class);\n\n            addEditContact.putExtra(CountryList.ROW_ID, rowID);\n            addEditContact.putExtra(\"name\", nameTv.getText());\n            addEditContact.putExtra(\"cap\", capTv.getText());\n            addEditContact.putExtra(\"time\", timeTv.getCurrentHour());\n            addEditContact.putExtra(\"code\", codeTv.getText());\n            startActivity(addEditContact); \n            return true;\n\n         case R.id.deleteItem:\n            deleteContact();\n            return true;\n\n         default:\n            return super.onOptionsItemSelected(item);\n      } \n   }\n\n   private void deleteContact()\n   {\n\n      AlertDialog.Builder alert = new AlertDialog.Builder(ViewCountry.this);\n\n      alert.setTitle(R.string.confirmTitle); \n      alert.setMessage(R.string.confirmMessage); \n\n      alert.setPositiveButton(R.string.delete_btn,\n         new DialogInterface.OnClickListener()\n         {\n            public void onClick(DialogInterface dialog, int button)\n            {\n               final DatabaseConnector dbConnector = \n                  new DatabaseConnector(ViewCountry.this);\n\n               AsyncTask deleteTask =\n                  new AsyncTask()\n                  {\n                     @Override\n                     protected Object doInBackground(Long... params)\n                     {\n                        dbConnector.deleteContact(params[0]); \n                        return null;\n                     } \n\n                     @Override\n                     protected void onPostExecute(Object result)\n                     {\n                        finish(); \n                     }\n                  };\n\n               deleteTask.execute(new Long[] { rowID });               \n            }\n         }\n      );\n\n      alert.setNegativeButton(R.string.cancel_btn, null).show();\n   }\n}\n<\/code><\/pre>\n<p>DATA OUT XML:<\/p>\n<pre><code>\n\n\n\n            \n     \n              \n  \n\n           \n              \n              \n  \n\n           \n              \n              \n  \n           \n              \n              \n  \n            \n              \n       \n\n  \n<\/code><\/pre>\n<p>DATA INPUT &#8211; JAVA<\/p>\n<pre><code>import android.app.Activity;\nimport android.app.AlertDialog;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.view.ViewGroup;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Button;\nimport android.widget.EditText;\nimport android.widget.FrameLayout;\nimport android.widget.TimePicker;\n\npublic class AddEditCountry extends Activity {\n\n private long rowID; \n private EditText nameEt;\n private EditText capEt;\n private EditText codeEt;\n private TimePicker timeEt;\n\n   @Override\n   public void onCreate(Bundle savedInstanceState) \n   {\n      super.onCreate(savedInstanceState); \n      setContentView(R.layout.add_country);\n\n      nameEt = (EditText) findViewById(R.id.nameEdit);\n      capEt = (EditText) findViewById(R.id.capEdit);\n      codeEt = (EditText) findViewById(R.id.codeEdit);\n      timeEt = (TimePicker) findViewById(R.id.timeEdit);\n\n\n      Bundle extras = getIntent().getExtras(); \n\n      if (extras != null)\n      {\n         rowID = extras.getLong(\"row_id\");\n         nameEt.setText(extras.getString(\"name\"));  \n         capEt.setText(extras.getString(\"cap\"));  \n         codeEt.setText(extras.getString(\"code\"));  \n         timeEt.setCurrentHour(extras.getInt(\"time\"));  \n      }\n\n      Button saveButton =(Button) findViewById(R.id.saveBtn);\n      saveButton.setOnClickListener(new OnClickListener() {\n\n          public void onClick(View v) \n          {\n             if (nameEt.getText().length() != 0)\n             {\n                AsyncTask saveContactTask = \n                   new AsyncTask() \n                   {\n                      @Override\n                      protected Object doInBackground(Object... params) \n                      {\n                         saveContact();\n                         return null;\n                      }\n\n                      @Override\n                      protected void onPostExecute(Object result) \n                      {\n                         finish();\n                      }\n                   }; \n\n                saveContactTask.execute((Object[]) null); \n             }\n\n             else\n             {\n                AlertDialog.Builder alert = new AlertDialog.Builder(AddEditCountry.this);\n                alert.setTitle(R.string.errorTitle); \n                alert.setMessage(R.string.errorMessage);\n                alert.setPositiveButton(R.string.errorButton, null); \n                alert.show();\n             }\n          } \n     });\n   }\n\n   private void saveContact() \n   {\n      DatabaseConnector dbConnector = new DatabaseConnector(this);\n\n      if (getIntent().getExtras() == null)\n      {\n          dbConnector.insertContact(nameEt.getText().toString(),\n                  capEt.getText().toString(),\n                  timeEt.getCurrentHour().toString(),\n                  codeEt.getText().toString());\n      }\n      else\n      {\n         dbConnector.updateContact(rowID,\n            nameEt.getText().toString(),\n            capEt.getText().toString(),\n            timeEt.getCurrentHour().toString(),\n            codeEt.getText().toString());\n      }\n   }\n}\n<\/code><\/pre>\n<p>DATA INPUT XML:<\/p>\n<pre><code>\n\n\n\n\n  \n\n  \n\n\n\n\n\n\n\n    \n\n    \n\n\n\n\n\n\n\n\n    \n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n\n\n<\/code><\/pre>\n<pre><code>import android.app.Activity;\nimport android.app.AlertDialog;\nimport android.content.DialogInterface;\nimport android.content.Intent;\nimport android.database.Cursor;\nimport android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.view.Menu;\nimport android.view.MenuInflater; \nimport android.view.MenuItem;\nimport android.widget.TextView;\nimport android.widget.TimePicker;\n\npublic class ViewCountry extends Activity {\n\n   private long rowID;\n   private TextView nameTv;\n   private TextView capTv;\n   private TextView codeTv; \n   private TimePicker timeTv; \n\n   @Override\n   public void onCreate(Bundle savedInstanceState) \n   {\n      super.onCreate(savedInstanceState);\n      setContentView(R.layout.view_country);\n\n      setUpViews();\n      Bundle extras = getIntent().getExtras();\n      rowID = extras.getLong(CountryList.ROW_ID); \n   }\n\n   private void setUpViews() {\n       nameTv = (TextView) findViewById(R.id.nameText);\n       capTv = (TextView) findViewById(R.id.capText);\n       timeTv = (TimePicker) findViewById(R.id.timeEdit);\n       codeTv = (TextView) findViewById(R.id.codeText);\n   }\n\n   @Override\n   protected void onResume()\n   {\n      super.onResume();\n      new LoadContacts().execute(rowID);\n   } \n\n   private class LoadContacts extends AsyncTask \n   {\n      DatabaseConnector dbConnector = new DatabaseConnector(ViewCountry.this);\n\n      @Override\n      protected Cursor doInBackground(Long... params)\n      {\n         dbConnector.open();\n         return dbConnector.getOneContact(params[0]);\n      } \n\n      @Override\n      protected void onPostExecute(Cursor result)\n      {\n         super.onPostExecute(result);\n\n         result.moveToFirst();\n         \/\/ get the column index for each data item\n         int nameIndex = result.getColumnIndex(\"name\");\n         int capIndex = result.getColumnIndex(\"cap\");\n         int codeIndex = result.getColumnIndex(\"code\");\n         int timeIndex = result.getColumnIndex(\"time\");\n\n         nameTv.setText(result.getString(nameIndex));\n         capTv.setText(result.getString(capIndex));\n         timeTv.setCurrentHour(result.getInt(timeIndex));\n         codeTv.setText(result.getString(codeIndex));\n\n         result.close();\n         dbConnector.close();\n      }\n   } \n\n\n   @Override\n   public boolean onCreateOptionsMenu(Menu menu) \n   {\n      super.onCreateOptionsMenu(menu);\n      MenuInflater inflater = getMenuInflater();\n      inflater.inflate(R.menu.view_country_menu, menu);\n      return true;\n   }\n\n   @Override\n   public boolean onOptionsItemSelected(MenuItem item) \n   {\n      switch (item.getItemId())\n      {\n         case R.id.editItem:\n            Intent addEditContact =\n               new Intent(this, AddEditCountry.class);\n\n            addEditContact.putExtra(CountryList.ROW_ID, rowID);\n            addEditContact.putExtra(\"name\", nameTv.getText());\n            addEditContact.putExtra(\"cap\", capTv.getText());\n            addEditContact.putExtra(\"time\", timeTv.getCurrentHour());\n            addEditContact.putExtra(\"code\", codeTv.getText());\n            startActivity(addEditContact); \n            return true;\n\n         case R.id.deleteItem:\n            deleteContact();\n            return true;\n\n         default:\n            return super.onOptionsItemSelected(item);\n      } \n   }\n\n   private void deleteContact()\n   {\n\n      AlertDialog.Builder alert = new AlertDialog.Builder(ViewCountry.this);\n\n      alert.setTitle(R.string.confirmTitle); \n      alert.setMessage(R.string.confirmMessage); \n\n      alert.setPositiveButton(R.string.delete_btn,\n         new DialogInterface.OnClickListener()\n         {\n            public void onClick(DialogInterface dialog, int button)\n            {\n               final DatabaseConnector dbConnector = \n                  new DatabaseConnector(ViewCountry.this);\n\n               AsyncTask deleteTask =\n                  new AsyncTask()\n                  {\n                     @Override\n                     protected Object doInBackground(Long... params)\n                     {\n                        dbConnector.deleteContact(params[0]); \n                        return null;\n                     } \n\n                     @Override\n                     protected void onPostExecute(Object result)\n                     {\n                        finish(); \n                     }\n                  };\n\n               deleteTask.execute(new Long[] { rowID });               \n            }\n         }\n      );\n\n      alert.setNegativeButton(R.string.cancel_btn, null).show();\n   }\n}\n<\/code><\/pre>\n<pre><code>\n\n\n\n         \n  \n          \n \n\n          \n          \n          \n \n\n         \n                      \n          \n \n          \n          \n          \n \n          \n          \n   \n\n\n\n<\/code><\/pre>\n<p>MOST RECENT LOGCAT: (after adding timeEdit to a TextView in view_country.xml)<\/p>\n<pre><code>03-22 03:02:27.724: D\/Activity(32616): Activity.onPause(), editTextTapSensorList size: 0\n03-22 03:02:27.794: W\/dalvikvm(32616): threadid=1: thread exiting with uncaught exception (group=0x410889d8)\n 03-22 03:02:27.794: E\/AndroidRuntime(32616): FATAL EXCEPTION: main\n03-22 03:02:27.794: E\/AndroidRuntime(32616): java.lang.RuntimeException: Unable to start  activity ComponentInfo{com.nfc.linkingmanager\/com.nfc.linkingmanager.ViewCountry}:  java.lang.ClassCastException: android.widget.TextView cannot be cast to  android.widget.TimePicker\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1960)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.ActivityThread.access$600(ActivityThread.java:127)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.os.Handler.dispatchMessage(Handler.java:99)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.os.Looper.loop(Looper.java:137)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.ActivityThread.main(ActivityThread.java:4477)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at java.lang.reflect.Method.invokeNative(Native Method)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at java.lang.reflect.Method.invoke(Method.java:511)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at dalvik.system.NativeStart.main(Native Method)\n03-22 03:02:27.794: E\/AndroidRuntime(32616): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.TimePicker\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at com.nfc.linkingmanager.ViewCountry.setUpViews(ViewCountry.java:38)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at com.nfc.linkingmanager.ViewCountry.onCreate(ViewCountry.java:30)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.Activity.performCreate(Activity.java:4701)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1924)\n03-22 03:02:27.794: E\/AndroidRuntime(32616):    ... 11 more\n<\/code><\/pre>\n<ol>\n<li>\n<p>use<\/p>\n<pre><code>timeTv = (TimePicker) findViewById(R.id.timeEdit);\n<\/code><\/pre>\n<p>instead of<\/p>\n<pre><code>timeTv = (TimePicker) findViewById(R.id.timePicker1);\n<\/code><\/pre>\n<p>because you have defined TimePicker id <code>android:id=\"@+id\/timeEdit\"<\/code> but trying to get <code>timePicker1<\/code> which is not available in current Activity layout or make sure you are using right layout for Activity<\/p>\n<\/li>\n<\/ol>\n<p id=\"rop\"><small>Originally posted 2014-02-03 02:35:09. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>I&#8217;m really not sure what I&#8217;m doing wrong at this point&#8230; im trying to vew data stored by the time picker &#8211; but every time I run the application I get force close errors. P.S. It appears the issue is stemming from Line 74 in View Country.java timeTv.setCurrentHour(result.getInt(timeIndex)); DATA OUT &#8211; JAVA: import android.app.Activity; import [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2574","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=2574"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2574\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=2574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=2574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=2574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}