开发者

How come when the activity is on ListActivity, it crashes but when it's activity, it works fine

public class test extends ListActivity{
/** Called when the activity is first created. */
protected Dialog mSplashDialog;
private static final String[] country = { "Iceland", "India", "Indonesia","Iran", "Iraq", "Ireland", "Israel", "Italy", "Laos", "Latvia","Lebanon", "Lesotho ", "Liberia", "Libya", "Lithuania","Luxembourg" };
private static final String[] curr = { "ISK", "INR", "IDR", "IRR", "IQD","EUR", "ILS", "EUR", "LAK", "LVL", "LBP", "LSL ", "LRD", "LYD","LTL ", "EUR"};    

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MyStateSaver data = (MyStateSaver) getLastNonConfigurationInstance();
    if (data != null) {
        // Show splash screen if still loading
        if (data.showSplashScreen) {
            showSplashScreen();
        }
        setContentView(R.layout.main);        

        // Rebuild your UI with your saved state here
    } else { 
        showSplashScreen();
        setContentView(R.layout.main);
        ListView l1 = (ListView) findViewById(R.id.list);
        l1.setAdapter(new EfficientAdapter(this)); 
        l1.setItemsCanFocus(true);
        }
    }

@Override
public Object onRetainNonConfigurationInstance() {
    MyStateSaver data = new MyStateSaver();
    // Save your important data here

    if (mSplashDialog != null) {
        data.showSplashScreen = true;
        removeSplashScreen();
    }
    return data;
}

/**
 * Removes the Dialog that displays the splash screen
 */
protected void removeSplashScreen() {
    if (mSplashDialog != null) {
        mSplashDialog.dismiss();
        mSplashDialog = null;
    }
}

/**
 * Shows the splash screen over the full Activity
 */
protected void showSplashScreen() {
    mSplashDialog = new Dialog(this, R.style.SplashScreen);
    mSplashDialog.setContentView(R.layout.splashscreen);
    mSplashDialog.setCancelable(false);
    mSplashDialog.show();

    // Set Runnable to remove splash screen just in case
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        removeSplashScreen();
      }
    }, 3000);
}

/**
 * Simple class for storing important data across config changes
 */
private class MyStateSaver {
    public boolean showSplashScreen = false;
    // Your other important fields here
}
public static class EfficientAdapter extends BaseAdapter {
    private LayoutInflater mInflater;

public EfficientAdapter(Context context) {
    mInflater = LayoutInflater.from(context);   
}
public int getCount() {
    return country.length;
    }
public Object getItem(int position) {
    return position;
    }
public long getItemId(int position) {
    return position;
    }
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.listview, null);
        convertView.setClickable(true);
        convertView.setFocusable(true开发者_开发问答);

        holder = new ViewHolder();
        holder.text = (TextView) convertView.findViewById(R.id.TextView01);
        holder.text2 = (TextView) convertView.findViewById(R.id.TextView02);
        holder.text3 = (TextView) convertView.findViewById(R.id.TextView03);
        holder.text4 = (TextView) convertView.findViewById(R.id.TextView04);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.text.setText(curr[position]);
    holder.text2.setText(country[position]);
    holder.text3.setText(country[position]);
    holder.text4.setText(country[position]);


    return convertView;
    }
    static class ViewHolder {
        TextView text4;
        TextView text;
        TextView text2;
        TextView text3;
}
}
public void onClick(View v) {
    Toast.makeText(getApplicationContext(), "Zipcode: ", Toast.LENGTH_SHORT).show();

}
};


If yuo are extending from ListActivity you need to add android:id="@android:id/list" on your list layout something like this

<LinearLayout android:orientation="vertical"
        android:layout_width="fill_parent" android:layout_height="wrap_content">
        <ListView android:id="@android:id/list" android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
    </LinearLayout>

I could be wrong but if you provide a LogCat trace and your layout i can give you a better advice.


I think you are trying to show a Dialog before setting the ContentView

Try writing this line setContentView(R.layout.main); before showSplashScreen()

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜