【发布时间】:2017-01-23 19:57:35
【问题描述】:
我在 SO 上关注了一些线程,但我无法让它工作,即使我觉得它与示例匹配并且我不知道为什么。
我创建了一个简单的微调器。在我的 AsyncTaskRunner 类中,我从 REST API 中提取信息,然后在 onPostExecute 中尝试将其添加到微调器中。但是当我调试/运行我的应用程序时,微调器内容为空.调试时 webChannelList 肯定不为空并且有内容
如果我不尝试动态添加任何内容,而只是在 onCreate 方法中手动添加内容,它就可以正常工作。但出于现实目的,我正在尝试动态添加。
SO 说要传入我所做的 MainActivity.. 但它不起作用。救命!
解决方案:我的 doInBackground 函数中有Debug.waitForDebugger();...一旦我删除它就可以完美运行。
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/singularSpinner" />
我省略了与我要问的内容无关的内容
public class MainActivity extends AppCompatActivity {
// Global Variables
private List<String> webChannelList = new ArrayList<String>();
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Load Singular Web Channels into GUI
AsyncTaskRunner runner = new AsyncTaskRunner(this);
runner.execute();
}
class AsyncTaskRunner extends AsyncTask<Void, Void, Void> {
MainActivity mainActivity;
@Override
protected Void doInBackground(Void... params) {
Debug.waitForDebugger(); //REMOVING THIS WORKS
webChannelList = StuffFromAPI();
return null;
}
@Override
protected void onPostExecute(Void result) {
if (!webChannelList.isEmpty()) {
spinner = (Spinner) findViewById(R.id.singularSpinner);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter =
new ArrayAdapter<String>(mainActivity, android.R.layout.simple_spinner_item, webChannelList);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
}
}
}
编辑: 所以我省略了 StuffFromAPI() 函数,只是使用 webChannelList.add("hello"); 手动添加了东西;例如,它完美地从 StuffFromAPI() 函数运行.. 奇怪的是,即使我只是将它注释掉并手动添加了一些东西。几乎就像它的缓存?但是现在我无法复制它..所以发生了一些事情,我不知道是什么。我是 Android 开发的新手,也许我缺少一些非常明显的东西。我所做的只是去构建 --> 运行或构建 --> 调试并且我连接了一个平板电脑
编辑 2: onPostExecute 函数是否有可能在从我的 API 中获取项目之前运行?这仍然没有意义,因为我在调试时实际看到了其中的内容,但它仍然没有显示在 GUI 中
【问题讨论】:
-
您是否检查过您是否从
StuffFromAPI()方法中获取了字符串列表? -
@AjayP.Prajapati 是的,这是我检查的第一件事。我在那里放了一个断点,我清楚地看到了我要添加的字符串内容。感谢您的意见
标签: android android-layout android-asynctask