2013-05-11 128 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