gpt4 book ai didi

android - 异步任务 : passing value to an Activity (onCreate method )

转载 作者:太空狗 更新时间:2023-10-29 12:53:14 24 4
gpt4 key购买 nike

更新1

Activity :

public Integer _number = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
if (_number >0)
{
Log.d("onSuccessfulExecute", ""+_number);
}
else
{
Log.d("onSuccessfulExecute", "nope empty songs lists");
}
}

public int onSuccessfulExecute(int numberOfSongList) {

_number = numberOfSongList;

if (numberOfSongList >0)
{
Log.d("onSuccessfulExecute", ""+numberOfSongList);
}
else
{
Log.d("onSuccessfulExecute", "nope empty songs lists");
}
return numberOfSongList;
}

结束 Update1

更新:AsynchTask 有自己的外部类。

如何将值从 AsyncTask onPostExecute()... 传递给 Activity

我的代码确实从 onPostExecute() 返回值并在 UI 上更新,但我正在寻找一种方法来设置来自 AsynchTask 的 Activity 变量 (NumberOfSongList)。

AsyncTask 类:

@Override
public void onPostExecute(asynctask.Payload payload)
{
AsyncTemplateActivity app = (AsyncTemplateActivity) payload.data[0];

//the below code DOES UPDATE the UI textView control
int answer = ((Integer) payload.result).intValue();
app.taskStatus.setText("Success: answer = "+answer);

//PROBLEM:
//i am trying to populate the value to an variable but does not seems like the way i am doing:
app.NumberOfSongList = payload.answer;
..............
..............
}

Activity :

  public Integer NumberOfSongList;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//Several UI Code
new ConnectingTask().execute();
Log.d("onCreate", ""+NumberOfSongList);

}

最佳答案

使用 setter 方法怎么样?例如

private int _number;
public int setNumber(int number) {
_number = number;
}

更新:

请看这段代码。这将完成您想要完成的任务。

Activity 类

public class TestActivity extends Activity {
public int Number;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

setContentView(R.layout.test);

Button btnDisplay = (Button) findViewById(R.id.btnDisplay);
btnDisplay.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
Toast toast = Toast.makeText(v.getContext(), "Generated number: " + String.valueOf(Number), Toast.LENGTH_LONG);
toast.show();
}
});

new TestTask(this).execute();
}
}

AsyncTask 类

public class TestTask extends AsyncTask<Void, Void, Integer> {
private final Context _context;
private final String TAG = "TestTask";
private final Random _rnd;

public TestTask(Context context){
_context = context;
_rnd = new Random();
}

@Override
protected void onPreExecute() {
//TODO: Do task init.
super.onPreExecute();
}

@Override
protected Integer doInBackground(Void... params) {
//Simulate a long-running procedure.
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
Log.e(TAG, e.getMessage());
}

return _rnd.nextInt();
}

@Override
protected void onPostExecute(Integer result) {
TestActivity test = (TestActivity) _context;
test.Number = result;
super.onPostExecute(result);
}
}

关于android - 异步任务 : passing value to an Activity (onCreate method ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9742446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com