2

私はAndroid開発の初心者です。私のプロジェクトには 2 つの Java ファイルがあります。1 つのファイルにはメイン アクティビティが含まれているため、ある Java ファイルからメイン アクティビティを含む別のファイルにデータを転送したいと考えています。

コルドバの例.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();



}
}

小説.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.javacordovaExample.javaアプリケーションnovel.javaを実行した後、私は"unfortunately app has stopped"エミュレーターに入っています。

これはログキャットです

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();



}
}

小説.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;
        }

}

どうすればこれを解決できますか?

4

3 に答える 3

1

リターンブロックの後にインテントステートメントを使用しています

PhoneNumber = tMgr.getLine1Number();を返します。

インテントmyIntent=new Intent(novel.this、cordovaExample.class);

リターンブロックの後、コードは到達不能エラーを示します。

インテントパラメータを渡した後、returnを呼び出すことができます。

   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();
于 2012-08-12T09:33:45.947 に答える
0

Android APIガイドには、単一のアプリケーション内のアクティビティ/サービス間でデータを渡す方法に関する最も信頼のおけるFAQ項目が含まれています。

これを試して、

電話番号を設定するために小説でこのようにします

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();
于 2012-08-12T09:27:52.113 に答える
0

コードを次のように変更してcordovaExample.javaください。novelnull

     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);}

            }
于 2012-08-12T12:34:04.677 に答える