当 return 为某些 Activity 时无法设置 Textview
Textview can not be set when return to some Activity
我有一项服务可以从我的 webservice
和 return 当前列表中删除一个对象。每次我请求该服务时,它都会更新我的 textview
(使用列表的大小)和我的适配器。问题是当我转到执行此服务的 MainActivity
和 return 到 activity 时,textview
和适配器不再更新。
apiServices.deleteEmployee(new APIServices.BookmarkCallback() {
@Override
public void onSuccess(final ArrayList<Employee> list) {
remainingPeople.setText(getResources().getString(R.string.remaining_people) + list.size());
adapter = new ArrayAdapter<>(getApplicationContext(),
android.R.layout.simple_list_item_1, list);
employeesList.setAdapter(adapter);
}
代码在我的onCreate()
方法中设置。
这个想法仍然是将 return 时的 textview
更新为 activity。
onCreate()
方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.activity_count);
remainingPeople = findViewById(R.id.peopleCounter);
findBT();
openBT();
@SuppressWarnings("unchecked")
ArrayList<Employee> list = (ArrayList<Employee>) getIntent()
.getSerializableExtra(SEND_EMPLOYEES_LIST);
remainingPeople.setText(getResources().getString(R.string.remaining_people) + list.size());
employeesList = findViewById(R.id.employees_list);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
employeesList.setAdapter(adapter);
beep = new ToneGenerator(AudioManager.STREAM_ALARM, 900);
handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case READ_ARRAY_BYTE:
byte[] arrayBytes = new byte[message.arg1];
System.arraycopy(message.obj, 0, arrayBytes, 0, message.arg1);
try {
String epc = new String(arrayBytes, "UTF-8");
beep.stopTone();
epc = epc.substring(0, 24);
apiServices.deleteEmployee(new APIServices.BookmarkCallback() {
@Override
public void onSuccess(final ArrayList<Employee> list) {
//this part updates after the API response
remainingPeople.setText(getResources().getString(R.string.remaining_people) + list.size());
adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
employeesList.setAdapter(adapter);
}
@Override
public void onError() {
}
}, epc);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
break;
//...
尝试将更新您的 textview
的进程放在 onResume()
而不是 onCreate()
@Override
public void onResume(){
super.onResume();
// put your code here...
}
我通过 michiakig's answer 找到了一个解决方案,我可以将我的文本视图声明为 static
,但我可能会遇到问题。所以,另一种方法是使用 Activity.onSaveInstanceState
保存。
谢谢所有回答我的人。
我有一项服务可以从我的 webservice
和 return 当前列表中删除一个对象。每次我请求该服务时,它都会更新我的 textview
(使用列表的大小)和我的适配器。问题是当我转到执行此服务的 MainActivity
和 return 到 activity 时,textview
和适配器不再更新。
apiServices.deleteEmployee(new APIServices.BookmarkCallback() {
@Override
public void onSuccess(final ArrayList<Employee> list) {
remainingPeople.setText(getResources().getString(R.string.remaining_people) + list.size());
adapter = new ArrayAdapter<>(getApplicationContext(),
android.R.layout.simple_list_item_1, list);
employeesList.setAdapter(adapter);
}
代码在我的onCreate()
方法中设置。
这个想法仍然是将 return 时的 textview
更新为 activity。
onCreate()
方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.activity_count);
remainingPeople = findViewById(R.id.peopleCounter);
findBT();
openBT();
@SuppressWarnings("unchecked")
ArrayList<Employee> list = (ArrayList<Employee>) getIntent()
.getSerializableExtra(SEND_EMPLOYEES_LIST);
remainingPeople.setText(getResources().getString(R.string.remaining_people) + list.size());
employeesList = findViewById(R.id.employees_list);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
employeesList.setAdapter(adapter);
beep = new ToneGenerator(AudioManager.STREAM_ALARM, 900);
handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case READ_ARRAY_BYTE:
byte[] arrayBytes = new byte[message.arg1];
System.arraycopy(message.obj, 0, arrayBytes, 0, message.arg1);
try {
String epc = new String(arrayBytes, "UTF-8");
beep.stopTone();
epc = epc.substring(0, 24);
apiServices.deleteEmployee(new APIServices.BookmarkCallback() {
@Override
public void onSuccess(final ArrayList<Employee> list) {
//this part updates after the API response
remainingPeople.setText(getResources().getString(R.string.remaining_people) + list.size());
adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
employeesList.setAdapter(adapter);
}
@Override
public void onError() {
}
}, epc);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
break;
//...
尝试将更新您的 textview
的进程放在 onResume()
而不是 onCreate()
@Override
public void onResume(){
super.onResume();
// put your code here...
}
我通过 michiakig's answer 找到了一个解决方案,我可以将我的文本视图声明为 static
,但我可能会遇到问题。所以,另一种方法是使用 Activity.onSaveInstanceState
保存。
谢谢所有回答我的人。