UPDATE1
活动:
公共整数_number = 0;
@覆盖
公共无效的onCreate(包savedInstanceState){
如果(_number大于0)
{
Log.d(onSuccessfulExecute,+ _number);
}
其他
{
Log.d(onSuccessfulExecute,不空的歌曲清单);
}
}
公众诠释onSuccessfulExecute(INT numberOfSongList){
_number = numberOfSongList;
如果(numberOfSongList大于0)
{
Log.d(onSuccessfulExecute,+ numberOfSongList);
}
其他
{
Log.d(onSuccessfulExecute,不空的歌曲清单);
}
返回numberOfSongList;
}
末UPDATE1
更新:。AsynchTask有它自己的外部类
如何从AsyncTask的onPostExecute()...传递价值的活动。
我的code并返回从onPostExecute(值)和更新用户界面,但我正在寻找一种方法来设置活动变量(NumberOfSongList )从AsynchTask未来
的AsyncTask类:
@覆盖
公共无效onPostExecute(asynctask.Payload有效载荷)
{
AsyncTemplateActivity应用=(AsyncTemplateActivity)payload.data [0];
//下面code会更新用户界面TextView控件
INT答案=((整数)payload.result).intValue();
app.taskStatus.setText(成功:回答=+答案);
//问题:
//我试图填充值的变量,但似乎并不喜欢的方式我这样做:
app.NumberOfSongList = payload.answer;
..............
..............
}
活动:
公共整数NumberOfSongList;
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
//一些UI code
新ConnectingTask()执行()。
Log.d(的onCreate,+ NumberOfSongList);
}
解决方案
有关使用setter方法是什么?例如,
私人诠释_number;
公众诠释setNumber(INT编号){
_number =号;
}
更新:的
请看看这个code。这会做你想要完成的任务。
活动类
公共类TestActivity延伸活动{
公众诠释号码;
@覆盖
保护无效的onCreate(包savedInstanceState){
// TODO自动生成方法存根
super.onCreate(savedInstanceState);
的setContentView(R.layout.test);
按钮btnDisplay =(按钮)findViewById(R.id.btnDisplay);
btnDisplay.setOnClickListener(新OnClickListener(){
公共无效的onClick(视图v){
吐司面包= Toast.makeText(v.getContext()生成的号码:+将String.valueOf(号码),Toast.LENGTH_LONG);
toast.show();
}
});
新TestTask(本).execute();
}
}
的AsyncTask类
公共类TestTask扩展的AsyncTask<虚空,虚空,整数GT; {
私人最终语境_context;
私人最终字符串变量=TestTask;
私人最终随机_rnd;
公共TestTask(上下文的背景下){
_context =背景;
_rnd =新的随机();
}
@覆盖
在preExecute保护无效(){
// TODO:做任务初始化。
super.on preExecute();
}
@覆盖
保护整数doInBackground(空... PARAMS){
//模拟一个长期运行的程序。
尝试 {
视频下载(3000);
}赶上(InterruptedException异常E){
Log.e(TAG,e.getMessage());
}
返回_rnd.nextInt();
}
@覆盖
保护无效onPostExecute(整数结果){
TestActivity测试=(TestActivity)_context;
test.Number =结果;
super.onPostExecute(结果);
}
}
Update1
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;
}
end Update1
UPDATE: AsynchTask has its own external class.
How to pass an value from AsyncTask onPostExecute()... to activity
my code does returning value from onPostExecute() and updating on UI but i am looking for a way to set the activity variable (NumberOfSongList
) coming from AsynchTask.
AsyncTask class:
@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);
}
解决方案
What about using a setter method? e.g.
private int _number;
public int setNumber(int number) {
_number = number;
}
UPDATE:
Please look at this code. This will do what you're trying to accomplish.
Activity class
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 class
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模拟器模拟器、几款、电话号码、不同
下一篇:如何通过Android的客户经理类检索Twitter和Facebook的身份验证和令牌令牌、身份验证、客户经理、Android