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,事件)修复了它
TO
adapter=newarrayadapter(SearchTwitter.this,android.R.layout.simple\u list\u item\u 1,events)