嗨,我有一個與我的應用probem。當屏幕旋轉時它崩潰。應用程序正在運行,但每當我嘗試旋轉屏幕它崩潰,這是我得到的錯誤。你有想法如何解決這個問題嗎?感謝屏幕旋轉RuntimeError
09-25 00:19:30.283: D/dalvikvm(2649): GC_CONCURRENT freed 494K, 21% free 3005K/3804K, paused 34ms+32ms, total 350ms
09-25 00:19:31.253: D/AndroidRuntime(2649): Shutting down VM
09-25 00:19:31.283: W/dalvikvm(2649): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
09-25 00:19:31.493: E/AndroidRuntime(2649): FATAL EXCEPTION: main
09-25 00:19:31.493: E/AndroidRuntime(2649): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.projectsoftware/com.projectsoftware.AlbumsActivity}: java.lang.NullPointerException
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread.access$700(ActivityThread.java:141)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.os.Handler.dispatchMessage(Handler.java:99)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.os.Looper.loop(Looper.java:137)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread.main(ActivityThread.java:5041)
09-25 00:19:31.493: E/AndroidRuntime(2649): at java.lang.reflect.Method.invokeNative(Native Method)
09-25 00:19:31.493: E/AndroidRuntime(2649): at java.lang.reflect.Method.invoke(Method.java:511)
09-25 00:19:31.493: E/AndroidRuntime(2649): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-25 00:19:31.493: E/AndroidRuntime(2649): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-25 00:19:31.493: E/AndroidRuntime(2649): at dalvik.system.NativeStart.main(Native Method)
09-25 00:19:31.493: E/AndroidRuntime(2649): Caused by: java.lang.NullPointerException
09-25 00:19:31.493: E/AndroidRuntime(2649): at com.projectsoftware.AlbumsActivity$1.onTextChanged(AlbumsActivity.java:76)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.widget.TextView.sendOnTextChanged(TextView.java:7231)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.widget.TextView.setText(TextView.java:3699)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.widget.TextView.setText(TextView.java:3554)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.widget.EditText.setText(EditText.java:80)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.widget.TextView.setText(TextView.java:3529)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.widget.TextView.onRestoreInstanceState(TextView.java:3429)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.view.View.dispatchRestoreInstanceState(View.java:12093)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2588)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2588)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.view.View.restoreHierarchyState(View.java:12071)
09-25 00:19:31.493: E/AndroidRuntime(2649): at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1634)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.Activity.onRestoreInstanceState(Activity.java:938)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ListActivity.onRestoreInstanceState(ListActivity.java:219)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.Activity.performRestoreInstanceState(Activity.java:910)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1131)
09-25 00:19:31.493: E/AndroidRuntime(2649): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158)
09-25 00:19:31.493: E/AndroidRuntime(2649): ... 12 more
09-25 00:19:39.853: I/Process(2649): Sending signal. PID: 2649 SIG: 9
下面是代碼
@SuppressLint({ "NewApi", "ViewHolder" })
public class AlbumsActivity extends ListActivity {
Button imgClick;
EditText inputSearch;
JSONArray albums = null;
JSONParser jsonParser = new JSONParser();
SimpleAdapter adapter = null;
ArrayList<HashMap<String, String>> albumsList;
AlertDialogManager alert = new AlertDialogManager();
private ProgressDialog pDialog;
private static final String URL_ALBUMS = "http://api.androidhive.info/songs/albums.php";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_SONGS_COUNT = "songs_count";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_albums);
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ff6d9850")));
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
albumsList = new ArrayList<HashMap<String, String>>();
inputSearch = (EditText) findViewById(R.id.inputSearch);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
AlbumsActivity.this.adapter.getFilter().filter(cs.toString());
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void afterTextChanged(Editable arg0) {}
});
new LoadAlbums().execute();
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.list_item_albums, null);
imgClick = (Button)view.findViewById(R.id.row_click_imageView1);
imgClick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu(v);
}
});
}
public void toast(View v){
showPopupMenu(v);
}
private void showPopupMenu(View v){
PopupMenu pop = new PopupMenu(AlbumsActivity.this, v);
pop.getMenuInflater().inflate(R.menu.menu,pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem arg0) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
String album_name = ((TextView) findViewById(R.id.album_name)).getText().toString();
i.putExtra("album_name", album_name);
startActivity(i);
return true;
}
});
pop.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 2){
if(resultCode == RESULT_OK){
String message = data.getStringExtra("Message");
TextView text = (TextView) findViewById(R.layout.activity_main);
text.setText(message);
}
}
}
class LoadAlbums extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AlbumsActivity.this);
pDialog.setMessage("Loading ...");
pDialog.setIndeterminate(false);
pDialog.show();
pDialog.setCancelable(false);
}
protected String doInBackground(String... args) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
String json = jsonParser.makeHttpRequest(URL_ALBUMS, "GET", params);
Log.d("Albums JSON: ", "> " + json);
try {
albums = new JSONArray(json);
if (albums != null) {
for (int i = 0; i < albums.length(); i++) {
JSONObject c = albums.getJSONObject(i);
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String songs_count = c.getString(TAG_SONGS_COUNT);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_ID, id);
map.put(TAG_NAME, name);
map.put(TAG_SONGS_COUNT, songs_count);
albumsList.add(map);
}
}else{
Log.d("Albums: ", "null");
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url) {
runOnUiThread(new Runnable() {
public void run() {
ListView lv = getListView();
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
Intent i = new Intent(getApplicationContext(), TrackListActivity.class);
String album_id = ((TextView) view.findViewById(R.id.album_id)).getText().toString();
i.putExtra("album_id", album_id);
startActivity(i);
}
});
AlbumsActivity.this.adapter = new SimpleAdapter(AlbumsActivity.this, albumsList, R.layout.list_item_albums, new String[] { TAG_ID, TAG_NAME, TAG_SONGS_COUNT }, new int[] {R.id.album_id, R.id.album_name, R.id.songs_count });
setListAdapter(AlbumsActivity.this.adapter);
pDialog.dismiss();
}
});
}
}
}
一些代碼會很好... – 2014-09-25 00:30:58
我編輯了我的文章。請檢查並查看代碼。謝謝 – Jonathan 2014-09-25 00:35:28
onTextChanged()方法在Activity重新創建時被調用。添加檢查'cs'是否爲空 – 2014-09-25 00:36:54