Я использую getHotelName()
и setHotelName()
для хранения данных в приложении, а затем доступа к нему. В моей основной деятельности, которая классифицируется как Launcher, в этой работе getApplication()
как методы, так и getApplication()
. Но когда я пытаюсь получить доступ к getApplication из другого действия, которое вызывается из основного действия, оно вызывает сильную ошибку закрытия.
Это мой файл манифеста:
<application android:icon="@drawable/icon" android:label="@string/app_short_name" android:name="RestaurantNetwork" android:allowClearUserData="true" android:theme="@android:style/Theme.Black" >
<activity android:name="RestaurantActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="NetworkCommunication"></activity>
<uses-permission android:name="android.permission.INTERNET" />
</application>
В основной деятельности
RestaurantNetwork application = (RestaurantNetwork) getApplication();
application.setHotelName(this.hotelname.getText().toString());
Intent intent = new Intent(view.getContext(), NetworkCommunication.class);
startActivity(intent);
В деятельности NetworkCommunication
public class NetworkCommunication extends Activity {
RestaurantNetwork application = (RestaurantNetwork) getApplication();
String hotelname = application.getHotelName().toString();
@Override
public void onCreate(Bundle savedInstanceState) {
Я решил это с помощью намерения.extra, да, я должен был избавиться от getApplication(). Хотелось бы также знать, почему произошла ошибка в предыдущем методе
в моей основной деятельности
this.hotelname = (EditText) findViewById(R.id.HotelName);
//RestaurantNetwork application = (RestaurantNetwork)getApplication();
//application.setHotelName(this.hotelname.getText().toString());
Intent intent = new Intent(view.getContext(), NetworkCommunication.class);
intent.putExtra("hotelName",this.hotelname.getText().toString());
startActivity(intent);
в моей второй деятельности
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.searchresults);
String value = null;
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
value = extras.getString("hotelName");
}
Toast.makeText(getApplicationContext(),value, Toast.LENGTH_SHORT).show();