2013-05-11 122 views
0

我試圖通過使用下面的代碼從一個活動屏幕移動到另一個活動屏幕。 第一個活動MainActivity只有一個按鈕點擊它我打算調用另一個活動Menactivity但是當我點擊按鈕什麼也沒有發生,有時候我會得到一個提示「不幸的是,應用程序已經停止工作,我添加了第二個活動。在我表現得我收到空指針異常錯誤和線程未能start.Please幫助嘗試從一個活動屏幕移動到另一個活動屏幕時,佈局保持不變

 package com.example.samplexml; 




     import android.os.Bundle; 
     import android.app.Activity; 
     import android.content.Intent; 
     import android.view.View; 
     import android.view.View.OnClickListener; 
     import android.widget.Button; 

    //First Activity (Mainactivity) 

     public class MainActivity extends Activity { 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       Button b2= (Button) findViewById(R.id.button2); 

       b2.setOnClickListener(new OnClickListener() { 
         @Override 
         public void onClick(View v) { 

          Intent intent = new Intent(MainActivity.this, MenActivity.class); 
          startActivity(intent); 
         }}); 

      } 
     } 


//Second Activity(Menactivity) 

package com.example.samplexml; 

import java.io.File; 
import java.io.IOException; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 


import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

import android.os.Bundle; 
import android.os.Environment; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MenActivity extends Activity { 

    TextView myTextView; 
    EditText E1; 
    EditText E2; 
    EditText E3; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


    Button b1= (Button) findViewById(R.id.button1); 
    Button b2= (Button) findViewById(R.id.button3); 
    Button b3= (Button) findViewById(R.id.button3); 
    E1 = (EditText) findViewById(R.id.editText1); 
    E2 = (EditText) findViewById(R.id.editText2); 
    E3 = (EditText) findViewById(R.id.editText3); 

    b1.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 




      DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docBuilder; 
      try { 
       docBuilder = docFactory.newDocumentBuilder(); 


      // root elements 
      Document doc = docBuilder.newDocument(); 
      Element rootElement = doc.createElement("Class"); 
      doc.appendChild(rootElement); 

      // staff elements 
      Element student = doc.createElement("Student"); 
      rootElement.appendChild(student); 


      // firstname elements 
      Element firstname = doc.createElement("firstname"); 
      firstname.appendChild(doc.createTextNode(E1.getText().toString())); 
      student.appendChild(firstname); 

      Element Email = doc.createElement("Email"); 
      Email.appendChild(doc.createTextNode(E2.getText().toString())); 
      student.appendChild(Email); 

      // nickname elements 
      Element Roll = doc.createElement("Roll_No"); 
      Roll.appendChild(doc.createTextNode(E3.getText().toString())); 
      student.appendChild(Roll); 


        // write the content into xml file 
      TransformerFactory transformerFactory = TransformerFactory.newInstance(); 



       Transformer transformer = transformerFactory.newTransformer(); 


      DOMSource source = new DOMSource(doc); 

      File FF=new File(Environment.getExternalStorageDirectory()+"//new1.xml"); 
      //File FF=new File(Environment.getExternalStorageDirectory()+"//new.xml"); 
      try { 
       if (FF.exists()); 
        FF.delete(); 
       FF.createNewFile(); 
      } catch (IOException e) { 
       // Handle the error here! don't ignore it. Either throw the exception all the way, or log it, or something. 
       e.printStackTrace(); 
      } 

      StreamResult result = new StreamResult(FF); 
     transformer.transform(source, result); 

       } 
      catch (ParserConfigurationException e) { 

       e.printStackTrace(); 
      } 
      catch (TransformerException e) { 

        e.printStackTrace();} 
      Toast.makeText(getApplicationContext(), 
        Environment.getExternalStorageDirectory().toString(), Toast.LENGTH_LONG).show(); 


           } 
    }); 
    b2.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(MenActivity.this, MainActivity.class); 
      startActivity(intent); 
     }}); 

    b3.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Close the application 
      finish(); }}); 
    } 
} 
+0

你能否粘貼整個錯誤信息? – 2013-05-11 14:17:39

+0

您爲單個按鈕定義了2個onClickListener()..... b2&b3都與button3 id連接。檢查按鈕聲明。 – 2013-05-11 14:26:45

+0

並嘗試更改getApplicationContext()而不是MainActivity.this。 – 2013-05-11 14:34:55

回答

0

根據您所提供的調試信息的唯一一塊 - you're得到一個NullPointerException - 似乎你的意圖被正確解僱,問題在於MenActivity的建設。

在所有裏可能性,該活動的虛擬佈局不包含button1,button2和/或button3的ID。

一些非常基本的調試將指出您的問題的確切位置。

+0

05-11 23:28:49.060:E/AndroidRuntime(28435):致命例外:主 05-11 23:28:49.060:E/AndroidRuntime(28435 ):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.example.samplexml/com.example.samplexml.MenActivity}:java.lang.NullPointerException 05-11 23:28:49.060:E/AndroidRuntime(28435) :\t at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) – user2044296 2013-05-11 18:06:40

+0

由於您只提供了SDK包中的行,因此您的問題顯然還在堆棧跟蹤中。 – 2013-05-11 21:08:22

+0

謝謝巴迪。我在代碼中追溯了這個問題,你說得對,問題出在膨脹的佈局上。 – user2044296 2013-05-12 14:40:06