2013-05-08 5 views
2

activity_main.xmlКнопка мыши в Android Фрагмент не работает

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
tools:context=".MainActivity" > 

<fragment 
    android:id="@+id/fragment1" 
    android:name="sithi.test.fragmenttest.Fragment1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</RelativeLayout> 

fragment1.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:onClick="btnClick1" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Large Text" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

</LinearLayout> 

ActivityMain.java

public class MainActivity extends Activity { 

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

} 

Fragment1.java

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
public class Fragment1 extends Fragment 
{ 
    TextView tv; 
    @Override 
    public void onStart() 
    { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    tv=(TextView)getView().findViewById(R.id.textView1); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
    { 
    // TODO Auto-generated method stub 
    //inflater.inflate(resource, root, attachToRoot); 
    return inflater.inflate(R.layout.fragment1, container, false); 
    } 

    public void btnClick1(View view) 
    { 
    tv.setText("dsdsdasda"); 
    } 


    } 

Я создал XML-файлы и классы, как это, но btnClick1() не работает в Android Фрагмент. Будет ошибка, когда я нажму эту кнопку в фрагменте. Я написал эту функцию нажатия кнопки внутри класса Fragment.

+0

обеспечивают журналы .. – bakriOnFire

+0

05-08 12: 44: 43,156: Вт/dalvikvm (29123): ThreadId = 1: поток, выходящий с неперехваченным исключением (группа = 0x40aa6210) 05-08 12: 44: 43.436: E/AndroidRuntime (29123): FATAL EXCEPTION: main 05-08 12: 44: 43.436: E/AndroidRuntime (29123): java.lang.IllegalStateException: Не удалось найти метод btnClick1 (View) в классе активности sithi.test. fragmenttest.MainActivity для обработчика onClick в классе вида android.widget.Button с идентификатором 'button1' –

ответ

2

Вам необходимо назначить OnClickListener в коде фрагмента, чтобы он работал. См. Snicolas ответ на вопрос «почему».

+1

Я преодолел метод onStart() и назначил OnClickListener в методе onStart(). Он работал нормально. –

+0

@ user2361252 'onCreateView' или' onViewCreated' может быть лучше для этого. –

9

Способ реализации XML onClick направлен на действия, а не на фрагменты. Активность должна принадлежать методу btnClick1, а не фрагменту.

+0

, так как мы можем реализовать onclickListener в фрагментах? – Saad

+0

Могу ли я узнать, как выйти из этого события btnClick1 из Activity. Есть ли возможность сделать это? –

+3

Предпочтительным способом является использование прослушивателя программно. Способ xml используется только для приложений для игрушек. myButton.setOnClickListener (новый OnClickListener() {void onClicked (просмотр v) {// ваш код здесь}}); – Snicolas

Смежные вопросы