У меня есть TabActivity
, содержащий другие действия, предназначенные для разделения формы. TabActivity
имеет в своем макете кнопку, предназначенную для сбора данных из всех представлений, связанных с формой, по всем действиям, содержащимся в TabActivity
, и их сохранения. Проблема, с которой я сталкиваюсь, заключается в том, что TabActivity
не имеет доступа к этим представлениям; когда я звоню findViewById()
одному из них, я получаю NullPointerException
.
Документация, похоже, не совсем точно описывает, как TabActivity
работает в отношении контроля действий, которые она содержит. Если при переключении с другого на другое действие разрушается, ситуация, в которой я нахожусь, будет иметь смысл. Я хотел бы знать лучший подход для достижения цели, описанной выше.
SRC / COM / продавец / MyTabActivity.java:
public class MyTabActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_tab_activity);
final Button saveButton = (Button) findViewById(R.id.save_button);
saveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// NullPointerException happens here
String fieldValue = ((TextView) findViewById(R.id.text_field)).getText().toString();
}
});
}
}
Рез / макет / my_tab_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost">
<LinearLayout>
<TabWidget android:id="@android:id/tabs"/>
<FrameLayout android:id="@android:id/tabcontent" />
<Button android:id="@+id/save_button"/>
</LinearLayout>
</TabHost>
SRC / COM / продавец / NestedActivity.java:
public class NestedActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nested_activity);
}
}
Рез / макет / nested_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout>
<EditText android:id="@+id/text_field"/>
</RelativeLayout>
</ScrollView>