Наряду с попыткой всего, что предлагает Teo Chuen Wei Bryan, убедитесь, что вы также ссылаетесь на правильное имя Server / Instance в строке подключения.
Если вы используете краткую форму имени хоста / экземпляра на сервере базы данных или в файле web.config, убедитесь, что вы используете полное доменное имя (FQDN) / экземпляр
Кроме того, чтобы проверить подключение с сервера, на котором нет клиента SQL-сервера,
-> создать текстовый файл и изменить его расширение файла на .udl
-> Щелкните правой кнопкой мыши файл, и вы увидите вкладку подключения.
-> Введите имя сервера и зарегистрируйте информацию для проверки соединения с сервером базы данных.
Надеюсь, это поможет.
findViewById()
возвращает вид, если он существует в макете, указанном в setContentView()
, в противном случае он возвращает null, и это то, что происходит с вами.
Пример, если вы setContentView(R.layout.activity_first);
, а затем вызовите findViewById(R.id.first_View);
он вернет представление, которое является вашим макетом.
Но если вы выберете findViewById(R.id.second_View);
, он вернет null
, поскольку на вашем макете activity_first.xml
нет представления, называемого @+id/second_View
.
Добавлен акцент
Для этих случаев в классе Activity.
Activity.findViewById(int id)
Находит представление, которое было идентифицировано атрибутом
blockquote >id
из XML, обработанного вonCreate(Bundle)
.
В противном случае, например, фрагмент, адаптер,
View
изLayoutInflater
и т. д.
View.findViewById(int id)
Ищите вид ребенка с данным
blockquote>id
. Если это представление имеет данный идентификатор, верните это представление.
В любом случае,
Возвращает представление, если найдено, или
blockquote>null
в противном случае.
Теперь перепроверьте ваши XML-файлы. Убедитесь, что вы ввели правильное значение в
setContentView
илиinflater.inflate
.В случае действия вызовите
findViewById
послеsetContentView
.Затем убедитесь, что в этом макете есть вид, который вы ищете с помощью
android:id="@+id/..."
. Убедитесь, что+
находится в@+id
, который добавит ресурс в значенияR.id
, чтобы убедиться, что вы можете найти его на Java.
Что сказал @Warlock, это правильно, вы должны сначала создать LinearLayout layout1, layout2, layout3 правильным способом:
LinearLayout layout1 = (LinearLayout) View.inflate(this, R.layout.first_View, null);
LinearLayout layout2 = (LinearLayout) View.inflate(this, R.layout.second_View, null);
LinearLayout layout3 = (LinearLayout) View.inflate(this, R.layout.third, null);
пожелать, чтобы моя консультация вам
В моем случае это была глупая ошибка с моей стороны. Я написал код в методе OnCreate, но он был выше строки кода setContentView
. Когда я переместил код ниже этой строки, приложение начало работать нормально.
setContentView(R.layout.activity_main);
В Android findViewById(R.id.some_id)
работает, когда вы находите вид в макете.
То есть, если вы установили макет, скажите:
setContentView(R.layout.my_layout);
Просмотров могут можно найти только в этом макете (my_layout).
В вашем коде layout1
, layout2
, layout3
все три разных макета, и они не настроены на активность.
добавьте эти представления в адаптер пейджера, прежде чем обращаться к ним.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new MyPagerAdapter();
pager = (ViewPager) findViewById(R.id.main_pager);
pager.setAdapter(adapter);
layout1 = (LinearLayout) findViewById(R.id.first_View);
layout2 = (LinearLayout) findViewById(R.id.second_View);
layout3 = (LinearLayout) findViewById(R.id.third_View);
}
в адаптере пейджера:
public Object instantiateItem(View collection, int position) {
if(position == 0){
View layout = inflater.inflate(R.layout.activity_first, null);
((ViewPager) collection).addView(layout);
return layout;
}
... and so forth.
}
отсюда вы можете получить к ним доступ через findViewById.
Я получил эту ошибку сегодня, и было так просто очистить, что я «facepalmed».
Просто попробуйте добавить элемент пользовательского интерфейса в свой XML-файл макета в каталоге res / layout-port !!!
Представления, которые вы пытаетесь получить, не определены в макете activity_main
. Вам необходимо программно раздуть просмотры, которые вы пытаетесь добавить в пейджер .-
@Override
public Object instantiateItem(ViewGroup collection, int position) {
LinearLayout l = null;
if (position == 0) {
l = (LinearLayout) View.inflate(this, R.layout.activity_first, null);
}
if (position == 1) {
l = (LinearLayout) View.inflate(this, R.layout.activity_second, null);
}
if (position == 2) {
l = (LinearLayout) View.inflate(this, R.layout.activity_third, null);
}
collection.addView(l, position);
return l;
}
Метод findViewById
должен найти то, что находится в макете (которую вы вызывали в setContentView
)
Иногда вам нужно очистить свой проект в Eclipse (Project - Clean ..).