2015-05-28 55 views
-2

我的佈局包含一個edittext和listview.On點擊一個listitem它應該啓動一個新的活動,它應該顯示用戶在edittext中輸入的字符串。 這是我的啓動活動。如何在android中使用意圖在listview中處理NullPointerException?

public class MainActivity extends ActionBarActivity 

{ 

String []fonts=new String[]{"Droid Serif","Droid Sans","Droid Sans Mono"}; 

ListView lv; 

ArrayAdapter<String> adapter; 

EditText e; 

String msg; 

String a=null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    lv=(ListView)findViewById(R.id.listView); 
    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,fonts); 
    lv.setAdapter(adapter); 
    msg=e.getText().toString(); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       Intent i = new Intent(MainActivity.this, Final.class); 
       if(msg.equals(a)) { 
        i.putExtra("msg", msg); 
        startActivity(i); 
       } 
       else 
       { 
        throw new NullPointerException("no null"); 
       } 


     }}); 

} 
} 

這是我的第二個活動。

public class Final extends Activity { 

TextView t=(TextView)findViewById(R.id.textView); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    String msg=getIntent().getExtras().getString("msg",null); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.hello); 
    t.setText(msg); 
} 
} 
+0

你的問題是什麼? –

+0

我想在edittext中設置用戶輸入的文本。當我運行這個應用程序時,我得到一個空白布局的新活動。 –

+0

我的答案是否適合你?如果確實如此,請接受它! –

回答

1

移動這一行:

TextView t=(TextView)findViewById(R.id.textView);

後:

setContentView(R.layout.hello);

,因爲你正試圖初始化TextView t已經創建了您的活動之前,您購買的NPE 。方法findViewById(int)是活動本身的一種方法,並且在onCreate()中實例化活動之前不能執行該方法。

This是一篇很好的文章,可以讓您深入瞭解活動生命週期的工作原理。我強烈建議您花更多時間閱讀活動及其基本知識,然後再繼續討論Android,尤其是生命週期。另外,當您在將來發布問題時,我強烈建議您嘗試更清楚一些,發佈錯誤日誌,並告訴我們您已經嘗試過哪些方面無效。

相關問題