2015-11-10 83 views
-2

我知道这里存在很多与这个头的主题,但我是新的android开发,并尝试了很多东西,但没有达到解决方案。意图nullPointer异常

我有一个带有TextView的MainClass。 MainClass在第二个类中调用一个方法(“检查”)。第二个类应该只创建一个字符串,然后在mainClass的textview中打印出一个意图。 (后来它应该更复杂,但首先我必须得到它)。

这里我MainClass的代码:

package com.projektarbeit; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 

     public static TextView output = null; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      //Variable initialisieren 
      output = (TextView) findViewById(R.id.output); 
      //App gestartet ausgeben 
      output.setText("App started"); 

      Check check1 = new Check(); 
      check1.doCheck(); 

      Intent intent = getIntent(); 
      String myString = intent.getStringExtra("Test"); 
      output.setText(myString); 
     } 
    } 

这里我CheckClass的代码:

package com.projektarbeit; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.MenuItem; 

    public class Check extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_check); 
     } 

     public void doCheck(){ 

      Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
      intent.putExtra("Test", "This is a test"); 
      startActivity(intent); 

     } 

    } 

我完全错了或什么是我的错?

+0

哪个是您的启动器活动?检查或MainActivity? –

+0

你的方式不正确。在这里描述你的需要。 –

+0

你可以使用startActivityforResult看看这个例子http://developer.android.com/intl/es/training/basics/intents/result.html –

回答

-1

您是否在Android清单中添加了您的活动?如果是的话请尝试

Intent intent = new Intent(Check.this, MainActivity.class); 

代替

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
+0

如果活动不会添加到AndroidManifest.xml,那么错误将是“ClassNotFound”而不是“NullPointer”。 –

4

为什么您使用的意图,想要做什么?

如果你真的想只检查字符串,则下面的代码段将工作:

public String doCheck(){ 

    return "This is a test"; 

} 

而在你的TextView设置这个文本,你只需要调用此方法是这样的:

output.setText(check1.doCheck()); 
+0

,因为doCheck方法与TextView不同。我想在MainActivity的视图中处理结果! – HobbyCoder

0
Check check1 = new Check(); 
check1.doCheck(); 

你不应该实例化一个Activity
要开始从CheckMainActivity你应该做这样的事情:

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

此外,作为马里兰州第纳尔曾建议,不要忘了declare the Activity on your AndroidManifest file

+0

我尝试像你这里promt但比textview是emtpy :( – HobbyCoder