Исключение нулевой точки

#android

#Android

Вопрос:

Я новичок в разработке приложений для Android.Я разработал базовое приложение и обнаружил ошибку нулевой точки в определенной строке и добавил if(instance!=null){сделай что-нибудь} .Но часть внутри if, т.е. Часть do something, никогда не выполняется.Как я могу это исправить? Так что мое приложение работает свойство

  public class MainActivity extends ActionBarActivity {  
      private Button btn1;
      private ImageView imagetoshow;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);         
         btn1=(Button)findViewById(R.id.button1);          
         imagetoshow=(ImageView)findViewById(R.id.imageView1);        
         if(btn1!=null){        
              btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     imagetoshow.setImageResource(R.drawable.image1);                   
                }
               }); 
          }      
          if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                      .add(R.id.container, new PlaceholderFragment())
                      .commit();
           }
        }           
        @Override
       public boolean onCreateOptionsMenu(Menu menu) {      
         // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
      }

     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         // 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.
         int id = item.getItemId();
         if (id == R.id.action_settings) {
             return true;
         }
         return super.onOptionsItemSelected(item);
     }

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

         public PlaceholderFragment() {
         }

         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
             return rootView;
         }
        }

     }
 

Комментарии:

1. использовать try { } catch (Exception e) {}

2. возможно, сначала инициализируйте его 🙂 или присвоите значение.

3. Опубликуйте свой код вместе с ошибкой Logcat

4. Эй, ребята, это не традиция гостеприимства — обслуживать новых пользователей негативными бомбами!!!

5. Какое значение я могу инициализировать переменной типа Button?

Ответ №1:

Код не выполняется, потому что ваше if (instance != null) утверждение неверно. Если вы хотите, чтобы этот код выполнялся, и вы не хотите иметь исключение NullPointerException, тогда инициализируйте любую переменную, которая равна нулю (т. Е. Присвоите ей значение). На этом этапе вы можете удалить нулевую проверку, и она больше не понадобится.

Опубликуйте свой код, если хотите получить более подробный ответ.

Комментарии:

1. Какое значение я могу инициализировать переменной типа Button?

2. Кнопка button = (Кнопка) findViewById(R.id.buttonId)

3. Я предоставил код, пожалуйста, просмотрите его. По умолчанию у меня есть относительный макет в fragment_main.xml и линейный макет в activity_main.xml.Как я мог бы привести линейный макет к activy_main.xml ?

Ответ №2:

Убедитесь, что вы связали соответствующий файл макета со своим классом Activity, а также объявили свою активность в «Android Manifest». Если это не так, отправьте мне свой код, чтобы я мог помочь вам отследить проблему.

Комментарии:

1. кажется, у него есть R.layout.activity_main