новичок здесь в коде android / java ... полностью ожидайте отрицательных голосов. но, надеюсь, какой-нибудь другой чувак сможет легко найти это, и ему не придется спрашивать, в чем проблема.
Попытка получить кнопку при нажатии, чтобы отправить пользователя на внешний веб-сайт
public class MessagesFragment extends Fragment {
public MessagesFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent viewIntent =
new Intent("android.intent.action.VIEW",
Uri.parse("http://www.stackoverflow.com/"));
startActivity(viewIntent);
}
});
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_messages, container, false);
}
}
Кнопка, (Кнопка) findViewById, setOnClickListener, OnClickListener (), Намерение, Намерение, Uri. у всех есть ошибки -_-
Вот xml
<?xml version = "1.0" encoding = "utf-8"?>
<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#67ffae"
tools:context = ".MessagesFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:layout_gravity = "center"
android:gravity = "center"
android:textColor = "@android:color/white"
android:textSize = "20sp"
android:textStyle = "bold"
android:text = "Messages Fragment" />
<Button
android:id = "@+id/button"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Button" />
</FrameLayout>
lalalalalalalalalalalalalalalalalalalalala Я знаю, что это в основном код, который мы обсуждаем переполнение стека.
да, теперь я делаю единственную ошибку с findViewById
и onclicklistener
OnClickListener - это еще один import: import android.view.View.OnClickListener;. Нажмите ctrl + alt + O, я думаю, что это так, и он должен делать это полуавтоматически. Взгляните на этот ответ, чтобы узнать, как использовать findViewById() в методе FragmentonCreateView().
Я не уверен, как findViewById () относится к моему. Спасибо за помощь!
Fragment не имеет метода findViewById(). Вы должны сначала подключить inflate() к View и вызвать findViewById(), как показано в этом ответе.
getView (). вызывает сбой приложения, и onCreateView () не запускается
Вы смотрите не на ту. Следуйте ответу, который я связал напрямую: stackoverflow.com/a/6496013.
Просмотр view = inflater.inflate (R.layout.fragment_messages, container, false); Кнопка button = (Кнопка) view.findViewById (R.id.button); button.setOnClickListener (новый OnClickListener () {public void onClick (View arg0) {Intent viewIntent = new Intent ("android.intent.action.VIEW", Uri.parse ("stackoverflow.com/ ")); startActivity (viewIntent);
Да, извините, я не видел обновленное вами сообщение. кнопка сейчас ничего не делает, но ошибок нет
Обратите внимание на заявление return там: return view;.
неожиданное возвращаемое значение
Вам нужно изменить свой оператор return inflater.inflate(...); на это. Не пытайтесь добавить это где-нибудь еще.
Разве это не нарушит вид навигации, который я настроил?
нет, это не спасибо за вашу помощь!
Я понятия не имею, что вы имеете в виду под «навигационным представлением», но нет, это то, что вам нужно, чтобы вернуться туда. Вы просто перемещаете инфляцию в верхнюю часть метода и возвращаете раздутый View в конце вместо того, чтобы раздуть и вернуть в одной строке.
Не могли бы вы вставить следующий код, чтобы я мог отдать вам должное за ответ
import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.content.Intent; import android.net.Uri; import android.view.View.OnClickListener; import android.widget.ImageView; / ** * Простой подкласс {@link Fragment}. * /
открытый класс MessagesFragment расширяет фрагмент {
public MessagesFragment () {// Обязательный пустой общедоступный конструктор} @Override public View onCreateView (LayoutInflater inflater, контейнер ViewGroup, Bundle savedInstanceState) {View view = inflater.inflate (R.layout.fragment_messages, container, false); Кнопка button = (Кнопка) view.findViewById (R.id.button);
button.setOnClickListener (new OnClickListener () {public void onClick (View arg0) {Intent viewIntent = new Intent ("android.intent.action.VIEW", Uri.parse ("stackoverflow.com/ ")); startActivity (viewIntent);}}) ; // Раздуваем макет для этого фрагмента return view;}}
О, я в порядке. Спасибо хоть. Это как бы превратилось в небольшое учебное занятие, охватывающее несколько вещей, которые мы действительно не должны делать. Не стесняйтесь, если хотите, сами отправьте ответ. Рад, что у тебя все получилось. Ваше здоровье!




В коде все правильно просто поменяй
Intent viewIntent= new Intent("android.content.Intent.action.VIEW",
Uri.parse("http://www.stackoverflow.com/"));
startActivity(viewIntent);
Надеюсь, это сработает
Есть ли у вас операторы
importв верхней части класса дляandroid.widget.Button,android.content.Intent,android.net.Uriи т. д.?