2012-08-12 190 views
1

我是Android开发的新手。我的项目中有两个Java文件。一个文件包含我的主要活动,所以我想将数据从一个Java文件传输到另一个包含主要活动的文件。在Android中将数据从一个Java文件传递到另一个文件

cordovaExample.java:

package org.apache.cordova.example; 

import android.content.Context; 
import android.content.Intent; 
import android.telephony.*; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

import org.apache.cordova.*; 
public class cordovaExample extends DroidGap 
{ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    super.loadUrl("file:///android_asset/www/index.html"); 

    Bundle extras = getIntent().getExtras(); 
    String phno = extras.getString("novel.PhoneNumber"); 
    Toast.makeText(getApplicationContext(),phno,Toast.LENGTH_LONG).show(); 



} 
} 

novel.java

package org.apache.cordova.example; 

import android.content.Context; 
import android.content.Intent; 
import android.telephony.*; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class novel extends Activity 
{ 
public String PhoneNumber; 
Context mcontext; 
public String getNumber() 
{ 



TelephonyManager tMgr=(TelephonyManager)mcontext.getSystemService(Context.TELEPHONY_SERVICE); 

     Intent intent = new Intent(this, cordovaExample.class); 
      intent.putExtra("novel.PhoneNumber", PhoneNumber); 
       startActivity(intent); 
       return PhoneNumber = tMgr.getLine1Number(); 
     } 

} 

所以我想给"PhoneNumber"novel.java转移到cordovaExample.javanovel.java,跑我在模拟器获得"unfortunately app has stopped"申请后。

这是logcat的

08-12 15:49:37.657: E/AndroidRuntime(779): FATAL EXCEPTION: main 
08-12 15:49:37.657: E/AndroidRuntime(779): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.apache.cordova.example/org.apache.cordova.example.cordovaExample}: java.lang.NullPointerException 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.os.Looper.loop(Looper.java:137) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.ActivityThread.main(ActivityThread.java:4424) 
08-12 15:49:37.657: E/AndroidRuntime(779): at java.lang.reflect.Method.invokeNative(Native Method) 
08-12 15:49:37.657: E/AndroidRuntime(779): at java.lang.reflect.Method.invoke(Method.java:511) 
08-12 15:49:37.657: E/AndroidRuntime(779): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
08-12 15:49:37.657: E/AndroidRuntime(779): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
08-12 15:49:37.657: E/AndroidRuntime(779): at dalvik.system.NativeStart.main(Native Method) 
08-12 15:49:37.657: E/AndroidRuntime(779): Caused by: java.lang.NullPointerException 
08-12 15:49:37.657: E/AndroidRuntime(779): at org.apache.cordova.example.cordovaExample.onCreate(cordovaExample.java:20) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.Activity.performCreate(Activity.java:4465) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
08-12 15:49:37.657: E/AndroidRuntime(779): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
08-12 15:49:37.657: E/AndroidRuntime(779): ... 11 more 

另外,如果我尝试简单的程序,我得到了相同的结果:

cordovaExample.java 

package org.apache.cordova.example; 

import android.content.Context; 
import android.content.Intent; 
import android.telephony.*; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

import org.apache.cordova.*; 
public class cordovaExample extends DroidGap 
{ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    super.loadUrl("file:///android_asset/www/index.html"); 

    novel c=new novel() 
    int a=c.getNumber(); 
    Toast.makeText(getApplicationContext(),a,Toast.LENGTH_LONG).show(); 



} 
} 

novel.java

package org.apache.cordova.example; 

import android.content.Context; 
import android.content.Intent; 
import android.telephony.*; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class novel extends Activity 
{ 
public int a=0; 
public int getNumber() 
{ 

    a=5; 

return a; 
     } 

} 

我该如何解决这个?

+0

你在'cordovaExample'的** Line20 **处得到'NullPointerException'。 logcat告诉如此:'引发:java.lang.NullPointerException 08-12 15:49:37.657:E/AndroidRuntime(779):at org.apache.cordova.example.cordovaExample.onCreate(cordovaExample.java:20) ' – 2012-08-12 12:11:47

+0

它是什么解决方案 – akshay1728 2012-08-12 12:40:56

回答

0

Android API指南包含一个关于how to pass data between between Activities/Services within a single application的权威常见问题解答项目。

试试这个,

做这样的小说设定的电话号码

Intent myIntent = new Intent(novel.this, cordovaExample.class); 
myIntent.putExtra("phone", 989898989); 
startActivity(myIntent); 
在cordovaExample文件

做以下,以获得phoneNumber的

Bundle b = this.getIntent().getExtras(); 
String i = b.getString("phone"); 

,如果你不能够通过数据然后替代方法是申报公共方法并通过它们,看下面的例子,

novel.java

private static String phoneNumber = ""; 

public void onCreate() 
{ 
    ... 
    phoneNumber = "9898989898"; 
    ... 
} 

public static String getPhoneNumber() 
{ 
     return phoneNumber; 
} 

cordovaExample.java

private static String phoneNumber = ""; 

phoneNumber = novel.getPhoneNumber(); 
+0

它显示“不幸应用程序已停止”在仿真器 – akshay1728 2012-08-12 10:20:30

+0

看到logcat并更新您的问题中的日志。 – png 2012-08-12 10:39:52

+0

logcat被添加到问题 – akshay1728 2012-08-12 10:47:42

1

您使用意向语句返回块

回报******中国= tMgr.getLine1Number()之后;

意图myIntent = new Intent(novel.this,cordovaExample.class);

返回阻止任何代码显示不可达错误。

传递意图参数后,您可以调用返回。

TelephonyManager tMgr=(TelephonyManager)mcontext.getSystemService(Context.TELEPHONY_SERVICE); 

    Intent intent = new Intent(this, cordovaExample.class); 
    intent.putExtra("novel.PhoneNumber", PhoneNumber); 
    startActivity(intent); 
    return PhoneNumber = tMgr.getLine1Number(); 
+0

谢谢...我已经做了非常愚蠢的错误 – akshay1728 2012-08-12 10:14:13

+0

,但现在它显示“不幸的应用程序已停止”在模拟器 – akshay1728 2012-08-12 10:16:17

+0

现在我更新的问题 – akshay1728 2012-08-12 10:29:09

0

更改代码到这一点:你在cordovaExample.java在因为...有novel NPE你把null ******中国的额外费用。

 TelephonyManager tMgr=(TelephonyManager)mcontext.getSystemService(Context.TELEPHONY_SERVICE); 

      Intent intent = new Intent(this, cordovaExample.class); 
      PhoneNumber = tMgr.getLine1Number(); // Check PhoneNumber not null here before send to cordovaExample 
if (PhoneNumber !=null){ 
       intent.putExtra("novel.PhoneNumber", PhoneNumber); 
        startActivity(intent);} 

      } 
+0

不,它不是null..when我在cordovaexample.java中写上面的代码,然后给出正确的语音编号,但是我想把代码放在单独的java文件中。我也试图直接调用它 - 小说a =新小说(),然后调用字符串phno = a.getNumber()...然后它也说应用程序停止 – akshay1728 2012-08-12 12:43:42

+0

我不明白'把代码放在单独的java文件'部分 – 2012-08-12 12:46:38

+0

我已经添加了代码...我必须为不同的方法制作不同的java文件 – akshay1728 2012-08-12 12:57:29

相关问题