1

모든 가능한 답변을 검토 한 후 내 코드에 문제가 있는지 찾을 수 없습니다.Android Studio - 조각 onClickListener가 작동하지 않습니다.

3 개의 조각에 OnClickListener가 있어야하는데, 그 중 하나는 mainActivity에 의해로드됩니다. 그들 중 누구도 일하고 ​​있지 않습니다. 각 조각에 OnClickListener를 구현했습니다. 여기

내 코드입니다 :

RequestFragment1.java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    view = inflater.inflate(R.layout.fragment_request1, container, false); 
    Button buttonRequest1 = (Button) view.findViewById(R.id.Request1Button); 
    buttonRequest1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String url = "https://www.google.ca/"; 
      WebView httpRequestResult = (WebView) getActivity().findViewById(R.id.webViewResult); 
      httpRequestResult.getSettings().setJavaScriptEnabled(false); 
      httpRequestResult.loadUrl(url); 
      getActivity().setContentView(R.layout.requests_webview); 
     } 
    }); 
    return view; 
} 

fragment_request1.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <Button 
     android:id="@+id/Request1Button" 
     android:layout_width="match_parent" 
     android:layout_height="90dp" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:text="Requête 1" /> 

</RelativeLayout> 

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_request1); 

    View currentView = findViewById(android.R.id.content); 
    //Implementation du TouchListener 
    currentView.setOnTouchListener(new SwipeListener(MainActivity.this) { 

Request1Button을 눌러 웹보기를 열어야합니다.

감사합니다.

+0

스택 오버플로에 오신 것을 환영합니다. 귀하를 돕기 위해 더 많은 정보가 필요합니다. 이 앱이 정확히 원하는 것은 무엇입니까? 지금 뭐하고 있니? 또한 질문에 직접 초점을 맞추도록 코드를 줄이면 도움이됩니다. 실험을 위해 새로운 Android Studio 프로젝트를 만들 수 있습니다. 이 프로토 타입 앱을 단일 리스너와 함께 사용하십시오. 그런 다음 거기에서 일하십시오. –

+0

p.s. 또한 Java는 모든 코드가 클래스에 있어야 함을 기억하십시오. 이러한 클래스 선언을 포함하면 특히 Android 개발에서 코드의 컨텍스트를 더 잘 이해할 수 있습니다. –

답변

1
setContentView(R.layout.fragment_request1); 

MainActivity.onCreate()에서이 줄 fragment_request1라는 이름의 XML 파일에 정의 된 레이아웃을 팽창. 그러나 이 아니라 조각을 만듭니다. 따라서 RequestFragment1.onCreateView()은 호출되지 않으며 OnClickListener은 설정되지 않습니다.

조각을 올바르게 만들고 FragmentManager으로로드해야합니다. 이 작업을 수행하는 방법을 보여주는 온라인 자습서가 많이 있습니다. Android 개발자 웹 사이트에서 시작하는 것이 좋습니다.

+0

당신이 옳았어요! 일단 모든 것이 해결 되었으면 당신의 대답을 받아 들일 것입니다, 그러나 당신은 올바른 길을 가고있었습니다! 고맙습니다! – Selecto

관련 문제