2013-11-14 3 views
1

Я пытаюсь выполнить код в java/android в первый раз, и я немного расстроен тем, что мои годы знания C#, похоже, не очень мне помогают.Привязка к кнопке в динамическом режиме

В настоящее время я пытаюсь создать событие buttonclick, которое должно быть привязано к кнопке, которая находится внутри динамического представления.

Часть моей деятельности:

private Button myButton; 

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

String selectedMenu=getArguments().getString(ARG_SECTION_NUMBER); 
    if (selectedMenu==getString(R.string.title_test)) { 
     View rootView = inflater.inflate(R.layout.fragment_test, container, false); 
     myButton=rootView.findViewById("@+id/buttonTest"); // ERROR? 
     myButton.setOnClickListener(this); 
     return rootView; 
    } 
    return null; 
} 

public void onClick(View v) { 
    if (v==myButton) { 
     // magic stuff 
    } 
} 

И мое определение кнопка:

<Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Test starten" 
      android:id="@+id/buttonTest" 
      android:layout_gravity="center_horizontal" 
      android:onClick="TestSoap_OnClick" /> 

В строке "ERROR" Я стараюсь, чтобы получить кнопку от просмотра. Как я могу получить к нему доступ?

И только для моего понимания: как кнопка кажется представлением: Является ли «Просмотр» в Java примерно таким же, как «Управление» в C# WinForms?

ответ

2

Заменить myButton = rootView.findViewById("@+id/buttonTest"); с myButton = (Button) rootView.findViewById(R.id.buttonTest);

Ожидается, что int - это идентификатор созданного представления, который указан в R.id.

+0

Примечание: вам также понадобится 'import com. . .R; 'и НЕ' Android.R' – CodeMonkey

0

попытка удалить строку андроида: OnClick = "TestSoap_OnClick" из вашего XML

, а также заменить myButton.setOnClickListener (это); с myButton.setOnClickListener (OnClick)

+0

Спасибо. Но все равно не помогает «найти» правильную кнопку. На этой строке «myButton» - это просто пустой объект Button, а не кнопка из этого представления. (findViewById() не работает так, как я его написал)) –

1

Попробуйте создать функцию, которая будет обрабатывать ваши OnClick: в вашем случае что-то вроде:

public void TestSoap_OnClick(View view){ 
     doSomething(); 
    } 

Затем при нажатии вашей кнопки будет автоматически вызывать эту функцию, так как у вас есть :

android:onClick="TestSoap_OnClick" 
Смежные вопросы