2016-09-18 107 views
0

我遵循这个https://developer.android.com/guide/topics/ui/controls/button.html#HandlingEvents 指令在我的片段的代码,我有这个OnClickListener在片段不工作

public final class Pag1 extends Fragment { 
    Button buton; 
    TextView texto; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     // return inflater.inflate(R.layout.fragment_pag1, container, false); 
     View vista =inflater.inflate(R.layout.fragment_pag1,container,false); 
     buton= (Button)vista.findViewById(R.id.button); 
     texto= (TextView) vista.findViewById(R.id.textView2); 

     buton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        texto.setText("sadfasdfsad"); 
       } 
      }); 

     return vista; 
    } 
} 

我不知道为什么这不工作,我看到更多的岗位,而不是工作我 如果anywants下载我的项目,这https://mega.nz/#!lAwjSIhC!j0nsG4ilwG9VS6_s1zuiY1Qe_0qXsxl0xpiieqVUCw0

<ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/scrollView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentBottom="true"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:weightSum="1" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:layout_alignTop="@+id/button4" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true"> 
      <!-- estas dos lineas arreglan el fallo de que el edit text se 
      volviese con el foco al inicio de la aplicacion--> 

      <!-- tenia un theme que era el que había puesto en el theme editor pero da problemas y esta mal configurado, lo he 
      quitado en el spinner--> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="Elige" 
       android:id="@+id/textView" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" /> 
      <!--android:layout_width="274dp"--> 
      <Spinner 

       android:layout_width="match_parent" 
       android:layout_height="94dp" 
       android:id="@+id/string_array" 
       android:layout_marginTop="46dp" 
       android:layout_below="@+id/textView" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:entries="@array/string_array" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="haz" 
       android:id="@+id/textView2" 
       android:layout_below="@+id/spinner" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_marginTop="48dp" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="number" 
       android:ems="10" 
       android:id="@+id/editText" 
       android:layout_marginTop="40dp" 
       android:layout_below="@+id/textView2" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" /> 

      <Button 
       android:layout_width="143dp" 
       android:layout_height="wrap_content" 
       android:text="Calcular" 
       android:id="@+id/button" 
       android:layout_marginTop="42dp" 
       android:layout_below="@+id/editText" 
       android:background="@color/colorAccent" 
       android:textColor="@color/abc_search_url_text_selected" 
       android:layout_alignRight="@+id/editText" 
       android:layout_alignEnd="@+id/editText" 
       android:layout_weight="0.14" 
       android:width="12dp" 
       android:height="25dp" 
       android:textSize="25dp" /> 

      <Button 
       style="?android:attr/buttonStyleSmall" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Info" 
       android:id="@+id/button4" 
       android:onClick="info" 
       android:textColor="@color/abc_search_url_text_selected" 
       android:background="@color/colorAccent" 
       android:layout_below="@+id/scrollView" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_marginTop="0dp" 
       android:layout_marginRight="0dp" 
       android:layout_gravity="right" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:id="@+id/textView3" 
       android:layout_below="@+id/linearLayout" 
       android:layout_alignLeft="@+id/linearLayout" 
       android:layout_alignStart="@+id/linearLayout" 
       android:layout_marginTop="62dp" 
       android:layout_alignParentBottom="true" 
       android:layout_alignRight="@+id/linearLayout" 
       android:layout_alignEnd="@+id/linearLayout" /> 

     </LinearLayout> 
    </ScrollView> 
+0

你有没有得到任何错误? –

+0

Nop,我运行的应用程序没有错误,当按下按钮时,没有任何反应 – ciberelfo

+0

张贴您的XML布局以及 –

回答

0

最后我解决这个问题,在我的MainActivity类别

(当在Android Studio中您选择选项卡活动,创造了这个类,它包含customviews和选择什么样的片段表演,我设置了onclicklistener在开关的片段,例如

公共视图onCreateView(LayoutInflater充气,容器的ViewGroup, 捆绑savedInstanceState){

 if (getArguments().getInt(ARG_SECTION_NUMBER)==1){ 
      View rootView = inflater.inflate(R.layout.fragment_pag1, container, false); 
      buton= (Button)rootView.findViewById(R.id.button); 
      texto= (TextView)rootView.findViewById(R.id.textView2); 

      buton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        texto.setText("sadfasdfsad"); 
       } 
      }); 


      return rootView; 
     } 
     else if(getArguments().getInt(ARG_SECTION_NUMBER)==2){ 
      View rootView = inflater.inflate(R.layout.fragment_pag2, container, false); 
      // 
      boton = (Button)rootView.findViewById(R.id.main_button); 
      edit = (EditText)rootView.findViewById(R.id.main_editText); 
      text = (TextView)rootView.findViewById(R.id.main_textview); 
      boton.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View view){ 

        String mensaje = edit.getText().toString(); 
        text.setText(String.valueOf(mensaje.length())); 

       } 

      }); 
      // 
      return rootView; 
     } 
     else{ 
      View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
      return rootView; 
     } 
     // 



     // 
    } 
0

我认为这可能是因为你添加下面的属性,以保存按钮,也许布局偷个的的LinearLayout重点..尝试删除这些属性,看看是否属实。

android:focusable="true" 
android:focusableInTouchMode="true" 
+0

我删除它,不工作:(,我将这些行,因为当我启动应用程序时,editext得到集中automaticaly – ciberelfo

+0

那好吧尝试添加这两个属性的按钮,以及也可点击=“真” :) – Cata

+0

,并且确保你初始化正确的按钮ID –

0
public class Pag1 extends Fragment { 
Button buton; 
TextView texto; 

public Pag1(){ 
} 

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

    View vista =inflater.inflate(R.layout.fragment_pag1,container,false); 
    buton= (Button) vista.findViewById(R.id.button); 
    texto= (TextView) vista.findViewById(R.id.textView2); 

    buton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       texto.setText("sadfasdfsad"); 
      } 
     }); 

    return vista; 
    } 
} 
+0

您只删除评论行?¿ – ciberelfo

+0

我添加了一个空的构造函数,也删除了final。 – W4R10CK

+0

在公共类中添加并删除最终Pag1扩展Fragment并且该按钮不起作用 – ciberelfo

0

尝试将代码添加到在onStart()方法。

@Override 
public void onStart() { 
    super.onStart(); 
    View v = getView(); 
    buton= (Button) v.findViewById(R.id.button); 

    buton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      texto.setText("sadfasdfsad"); 
     } 
    }); 

} 
+0

抱歉回答,无法正常工作 – ciberelfo

+0

@ciberelfo获取任何错误或无效? –

+0

没有影响,现在我解决它,:D我发布的解决方案(主要活动onclicklistener) – ciberelfo