public class MainActivity extends Activity{
private EditText et_username;
String ms=md;            //?我这样赋值不行,
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_username=(EditText) this.findViewById(R.id.et_username);
        
        //检查是否保存的号码,如果有就回显
        Map<String,String> map=LoginService.getSavedUserInfo(this);
        if(map!=null)
        {
         et_username.setText(map.get("username")); 
        
        }
        String md=map.get("username");       //?md的值赋值给f()里的ms
        Toast.makeText(this, md+"保存成功12", 0).show();
       
    }
    public  String f()//?
    {
     return ms;
    }String

解决方案 »

  1.   

    怎么才能使 md的值赋给 方法f()里的ms
      

  2.   

    赋值放在方法里呗String md=map.get("username"); 
    ms=md;     
      

  3.   

    08-15 05:03:16.582: E/AndroidRuntime(5598): FATAL EXCEPTION: main
    08-15 05:03:16.582: E/AndroidRuntime(5598): java.lang.RuntimeException: Unable to start receiver whj.cn.SMSZhuanFa: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2431)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.app.ActivityThread.access$1500(ActivityThread.java:141)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.os.Handler.dispatchMessage(Handler.java:99)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.os.Looper.loop(Looper.java:137)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.app.ActivityThread.main(ActivityThread.java:5103)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at java.lang.reflect.Method.invokeNative(Native Method)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at java.lang.reflect.Method.invoke(Method.java:525)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at dalvik.system.NativeStart.main(Native Method)
    08-15 05:03:16.582: E/AndroidRuntime(5598): Caused by: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.telephony.SmsManager.sendTextMessage(SmsManager.java:78)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at whj.cn.SMSZhuanFa.onReceive(SMSZhuanFa.java:43)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2424)
    08-15 05:03:16.582: E/AndroidRuntime(5598):  ... 10 more
     //这样做 他报的错
      

  4.   

    1,把你刚开始的赋值改了,只定义ms,不要赋值:
       String ms = null;
    2,在onCreate方法中,String md=map.get("username"); 这一句之后,加上:
       ms = md;
      

  5.   

    还是跟前面报的一样的错,还有其他的方法吗,才能使 md的值赋给 方法f()里的ms
      

  6.   

    f()方法是在什么时候执行?如果要保证调用f()方法就取到onCreate()方法给ms赋的值,你可以这样:
    1:String ms = "";
    2:ms = md;
    (如5楼所说)
    然后建立构造方法
    public MainActivity(){
       onCreate(Bundle savedInstanceState);
    }
    关键问题在于f()取值时ms没被赋值,即这之前执行onCreate()与否。
    另外String ms = md;这种方法肯定不行的
      

  7.   

       MainActivity的creat是自动执行的,只要在creat方法里对md赋值f()里面应该就能取到,可以试试
       public class MainActivity extends Activity{
    private EditText et_username;
    String ms=null;
    String md = null;      //这里不同  
            @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            et_username=(EditText) this.findViewById(R.id.et_username);
            
            //检查是否保存的号码,如果有就回显
            Map<String,String> map=LoginService.getSavedUserInfo(this);
            if(map!=null)
            {
             et_username.setText(map.get("username")); 
             
            }
            md=map.get("username");       //这里不同
            Toast.makeText(this, md+"保存成功12", 0).show();
           
        }
        public  String f()//?
        {
      ms =md
         return ms;
        } }
    另外你的代码好像少一个与MainActivity大括号对应的大括号。
      

  8.   


    08-16 01:38:35.004: E/AndroidRuntime(507): FATAL EXCEPTION: main
    08-16 01:38:35.004: E/AndroidRuntime(507): java.lang.RuntimeException: Unable to start receiver whj.cn.SMSZhuanFa: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2431)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.access$1500(ActivityThread.java:141)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.os.Handler.dispatchMessage(Handler.java:99)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.os.Looper.loop(Looper.java:137)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.main(ActivityThread.java:5103)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at java.lang.reflect.Method.invokeNative(Native Method)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at java.lang.reflect.Method.invoke(Method.java:525)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at dalvik.system.NativeStart.main(Native Method)
    08-16 01:38:35.004: E/AndroidRuntime(507): Caused by: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.telephony.SmsManager.sendTextMessage(SmsManager.java:78)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at whj.cn.SMSZhuanFa.onReceive(SMSZhuanFa.java:37)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2424)
    08-16 01:38:35.004: E/AndroidRuntime(507):  ... 10 more
    //会这样报错
      

  9.   

    f()方法,在有人发短信时执行,,你觉得应该怎么做,看了你说的,还是有点不明白,
    如果这两个方法不能确定先执行onCreate方法的话,你可以把onCreate()方法的返回类型改成String类型,然后返回md,f()方法中直接返回onCreate()方法
      

  10.   

    f()方法,在有人发短信时执行,,你觉得应该怎么做,看了你说的,还是有点不明白,
    如果这两个方法不能确定先执行onCreate方法的话,你可以把onCreate()方法的返回类型改成String类型,然后返回md,f()方法中直接返回onCreate()方法
    protected String onCreate(Bundle savedInstanceState) {//?这里不能改String 类型 要报错
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            et_username=(EditText) this.findViewById(R.id.et_username);
            
            //检查是否保存的号码,如果有就回显
            Map<String,String> map=LoginService.getSavedUserInfo(this);
            if(map!=null)
            {
             et_username.setText(map.get("username")); 
            
            }
            md=map.get("username");//?这方法里的md 不能外部使用
          
           Toast.makeText(this, md+"保存成功12", 0).show();
           return md;
          
        }
      

  11.   


    08-16 01:38:35.004: E/AndroidRuntime(507): FATAL EXCEPTION: main
    08-16 01:38:35.004: E/AndroidRuntime(507): java.lang.RuntimeException: Unable to start receiver whj.cn.SMSZhuanFa: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2431)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.access$1500(ActivityThread.java:141)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.os.Handler.dispatchMessage(Handler.java:99)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.os.Looper.loop(Looper.java:137)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.main(ActivityThread.java:5103)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at java.lang.reflect.Method.invokeNative(Native Method)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at java.lang.reflect.Method.invoke(Method.java:525)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at dalvik.system.NativeStart.main(Native Method)
    08-16 01:38:35.004: E/AndroidRuntime(507): Caused by: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.telephony.SmsManager.sendTextMessage(SmsManager.java:78)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at whj.cn.SMSZhuanFa.onReceive(SMSZhuanFa.java:37)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2424)
    08-16 01:38:35.004: E/AndroidRuntime(507):  ... 10 more
    //会这样报错
    看不出来原因,我觉得可能是你其他代码的问题吧
      

  12.   

    传参数有问题:
    8-16 01:38:35.004: E/AndroidRuntime(507): FATAL EXCEPTION: main
    08-16 01:38:35.004: E/AndroidRuntime(507): java.lang.RuntimeException: Unable to start receiver whj.cn.SMSZhuanFa: java.lang.IllegalArgumentException: Invalid destinationAddress
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2431)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread.access$1500(ActivityThread.java:141)
    08-16 01:38:35.004: E/AndroidRuntime(507):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
      

  13.   

    其他代码以前都能用,是直接把号码放在上面,现在弄了个界面来输入号码,把输入值赋值到里面。我直接把f()方法里的ms直接赋值,都可以用。从onCreate()方法里获取值就不行了
      
      

  14.   

    你先初始化ms  String ms= "";
    然后在onCreate()赋值之后报错的地方是ms没取到值么?
      

  15.   

    你先初始化ms  String ms= "";
    然后在onCreate()赋值之后报错的地方是ms没取到值么?
    恩,是的,没有取到值,