2013-04-10 44 views
0

我不知道這段代碼有什麼問題。當我運行它時,我的應用程序崩潰。無法啓動來自ListActivity的活動

下面的代碼:

package com.example.smsTest; 

import java.util.List; 
import android.app.ListActivity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class Messages extends ListActivity { 
    Button btnNew; 
    private SQLiteAdapter mySQLiteAdapter; 

    private BroadcastReceiver mIntentReceiver; 
    ListView listview; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     btnNew = (Button) findViewById(R.id.btnNew); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.messages); 

     mySQLiteAdapter = new SQLiteAdapter(this); 
     mySQLiteAdapter.openToRead(); 

     List<Message> values = mySQLiteAdapter.getAllMessages(); 

     ArrayAdapter<Message> adapter = new ArrayAdapter<Message>(this, 
       android.R.layout.simple_list_item_1, values); 
     setListAdapter(adapter); 

     btnNew.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(Messages.this, 
         SMSTest.class); 
       startActivity(myIntent); 
      } 

     }); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     IntentFilter intentFilter = new IntentFilter("SmsMessage.intent.MAIN"); 
     mIntentReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       @SuppressWarnings("unchecked") 
       ArrayAdapter<Message> adapter = (ArrayAdapter<Message>) getListAdapter(); 
       Message message = null; 

       String msg = intent.getStringExtra("get_msg"); 

       // Process the sms format and extract body & phoneNumber 
       msg = msg.replace("\n", ""); 
       String body = msg.substring(msg.lastIndexOf(":") + 1, 
         msg.length()); 
       String sender = msg.substring(0, msg.lastIndexOf(":")); 

       message = mySQLiteAdapter.createMessage(sender, body); 
       //adapter.add(message); 
       adapter.notifyDataSetChanged(); 
      } 
     }; 

     this.registerReceiver(mIntentReceiver, intentFilter); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     this.unregisterReceiver(this.mIntentReceiver); 
    } 
} 

這是我剛纔添加的代碼加上變量聲明上面的按鈕:

 btnNew.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(Messages.this, 
         SMSTest.class); 
       startActivity(myIntent); 
      } 

     }); 

回答

2

必須使用膨脹佈局後,找到你的看法LayoutInflater或致電setContentView(R.layout.messages);

修改

btnNew = (Button) findViewById(R.id.btnNew); 

super.onCreate(savedInstanceState); 
setContentView(R.layout.messages); 

super.onCreate(savedInstanceState); 
setContentView(R.layout.messages); 

btnNew = (Button) findViewById(R.id.btnNew); 
+1

代碼只回答一般都是不好的。你能否添加一個解釋讓OP知道他們爲什麼有錯? – codeMagic 2013-04-10 14:45:23

+0

我的不好。我以爲我可以把它放在任何地方。謝謝 – jaypabs 2013-04-10 14:50:27

+2

@jaypabs原因在於你的'View'存在於'layout'內部,所以如果你沒有用'inflater'或者通過調用'setContentView()'''''layout'來擴充'null' – codeMagic 2013-04-10 14:54:40

相關問題