Java 当我试图更新onPostExecute(…)方法中的字段时,Android应用程序崩溃
我试图在Java 当我试图更新onPostExecute(…)方法中的字段时,Android应用程序崩溃,java,android,listview,Java,Android,Listview,我试图在onPostExecute(..)方法中设置myString的值。嗯,我确信myString设置在那里。 接下来,我想设置一个ListView,其中还包含myString,这是在onPostExecute(…)方法中设置的。但是当我运行应用程序时,它崩溃了,它崩溃只是因为我在ArrayList中添加了myString 在onPostExecute(..)方法中设置值有什么问题?我怎样才能修好它?提前谢谢 public class SearchTwitter extends ListAct
onPostExecute(..)
方法中设置myString
的值。嗯,我确信myString
设置在那里。
接下来,我想设置一个ListView
,其中还包含myString
,这是在onPostExecute(…)
方法中设置的。但是当我运行应用程序时,它崩溃了,它崩溃只是因为我在ArrayList
中添加了myString
在onPostExecute(..)
方法中设置值有什么问题?我怎样才能修好它?提前谢谢
public class SearchTwitter extends ListActivity {
private ArrayList<String> events;
private ArrayAdapter<String> adapter;
private String myString;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
searchTweets();
events = new ArrayList<String>();
events.add("Item");
events.add(myString); // Application crashes because of that line
adapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1, events);
setListAdapter(adapter);
}
private void searchTweets()
{
new SearchTweets().execute("Hello World");
}
class SearchTweets extends AsyncTask<String, String, List<Status>> {
@Override
protected void onPostExecute(List<Status> result)
{
myString = result.get(0).getUser().getScreenName();
}
@Override
protected List<Status> doInBackground(String... params)
{
//Do the work here and return a List<Status>
}
}
您的onCreate()
应该如下所示:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
searchTweets();
}
@Override
protected void onPostExecute(List<Status> result) {
myString = result.get(0).getUser().getScreenName();
events = new ArrayList<String>();
events.add("Item");
events.add(myString);
adapter = new ArrayAdapter<String> (SearchTwitter.this, android.R.layout.simple_list_item_1, events);
setListAdapter(adapter);
}
您的onPostExecute()
应该如下所示:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
searchTweets();
}
@Override
protected void onPostExecute(List<Status> result) {
myString = result.get(0).getUser().getScreenName();
events = new ArrayList<String>();
events.add("Item");
events.add(myString);
adapter = new ArrayAdapter<String> (SearchTwitter.this, android.R.layout.simple_list_item_1, events);
setListAdapter(adapter);
}
@覆盖
受保护的void onPostExecute(列表结果){
myString=result.get(0.getUser().getScreenName();
事件=新的ArrayList();
事件。添加(“项目”);
添加(myString);
adapter=newarrayadapter(SearchTwitter.this、android.R.layout.simple\u list\u item\u 1、事件);
setListAdapter(适配器);
}
试试这个。它应该可以工作。哪个错误会使你的应用程序崩溃,请将它添加到你的问题中,尝试
私有字符串myString=“”代码>-空与空之间的差异。所以这里:events.add(myString);//应用程序因该行而崩溃
您将不会有一个空字符串对象,而是一个初始化为空的字符串。@DerGolem我试过了,它不会崩溃,但值不会显示在列表中。当然。。。。它是空白的!如果希望它显示一个值,请为其指定一个不同于空白的值:private String myString=“abcd”代码>或留空,稍后初始化:myString=“abcd”
我希望在onPostExecute(..)
方法中修改myString
的值。为什么不更新呢?我刚试过,在最后一行的下一行出现了一个错误:adapter=newarrayadapter(这个,android.R.layout.simple\u list\u item\u 1,events)
表示:构造函数ArrayAdapter(SearchTwitter.SearchTweets,int,ArrayList)
未定义!很抱歉给你带来困惑。。。我已进行了编辑,请尝试新代码并让我知道它是否有效…:)好的,我通过更改adapter=newarrayadapter(这个,android.R.layout.simple\u list\u item\u 1,事件)修复了它
TOadapter=newarrayadapter(SearchTwitter.this,android.R.layout.simple\u list\u item\u 1,events)代码>