Мое приложение получает "Force close" на нескольких устройствах - PullRequest
0 голосов
/ 06 сентября 2010

У меня есть люди, которые жалуются, что мое приложение получает FC при запуске (в то время как у других никогда не было ни одной проблемы).Вот мой полный источник активности.Так как это происходит на устройствах, которыми я не владею, я не могу это исправить.Из того, что они говорят мне, это не работает: Motorola Blackflip, Motorola Dext, Motorola CLIQ XT.Думаю, Motorola все-таки не нравится мое приложение ...

Может ли быть так, что я разрешу minSdkVersion = "3"?Я тестировал 1.5 на эмуляторе и работал нормально ...

Заранее спасибо за ваши ответы.

public class workit extends Activity implements OnClickListener {

 Button yay;
 Button yay0;
 Button yay1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);

        yay = (Button) findViewById(R.id.gostart);
        yay.setOnClickListener(this);
        yay0 = (Button) findViewById(R.id.dontstart);
        yay0.setOnClickListener(this);
        yay1 = (Button) findViewById(R.id.exit);
        yay1.setVisibility(ImageView.GONE);


        ImageView inizio = (ImageView)findViewById(R.id.start);                                        
        inizio.setVisibility(ImageView.VISIBLE);
        inizio.setBackgroundResource(R.drawable.start);
    }

 public void onClick(View v) {
  // TODO Auto-generated method stub
     if (v == yay0) {
      finish();
  }
     if (v == yay) {
   ImageView inizio = (ImageView)findViewById(R.id.start);
   inizio.setVisibility(ImageView.GONE);
   WebView work = new WebView(this);
   setContentView(work);
   work.loadUrl("file:///android_asset/index1.html");
   work.setWebViewClient( new work()); 
   work.setBackgroundColor(0);
   work.getSettings().setBuiltInZoomControls(true);
   work.getSettings().setDefaultZoom(ZoomDensity.FAR);
  }
     if (v == yay1) {
      finish();
  }
    }
    private class work extends WebViewClient {     
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.contains("exit.html")) {
             // TODO: do what you have to do
             finish();
            }
            view.loadUrl(url);
            return true;
        }
    } 
}

1 Ответ

1 голос
/ 06 сентября 2010

Лучше всего попросить кого-нибудь прислать вам вывод LogCollector (по моему опыту, пользователи очень рады предоставить вам информацию для устранения проблем. Есть некоторые действительно крутые люди). Это должно дать вам стек вызовов и информацию о том, какое исключение вы вызвали (NullPointerException и т. Д.).

Далее - на чем вы строите свое приложение? Где-то должна быть запись "Android x.x" в структуре вашего проекта. Если вы создаете что-то, что должно работать на Android 1.5, то убедитесь, что вы действительно работаете с 1.5. Вы можете построить против 2.0, если хотите, но если вам нужно использовать функции, специфичные для 2.0, вам придется их правильно инкапсулировать. (Это было подробно объяснено в стеке потока несколько раз.)

На несвязанной ноте - я рекомендую более информативные имена переменных. «yay0» ничего не значит для тех, кто какое-то время не работал тесно с кодом.

...