方法间的赋值问题

whj11 2013-08-15 02:52:29


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;
}
...全文
374 17 打赏 收藏 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
whj11 2013-08-19
  • 打赏
  • 举报
回复
引用 16 楼 qiheanxiang 的回复:
[quote=引用 15 楼 whj11 的回复:] 其他代码以前都能用,是直接把号码放在上面,现在弄了个界面来输入号码,把输入值赋值到里面。我直接把f()方法里的ms直接赋值,都可以用。从onCreate()方法里获取值就不行了
你先初始化ms String ms= ""; 然后在onCreate()赋值之后报错的地方是ms没取到值么?[/quote] 恩,是的,没有取到值,
keepdaydayup 2013-08-18
  • 打赏
  • 举报
回复
引用 15 楼 whj11 的回复:
其他代码以前都能用,是直接把号码放在上面,现在弄了个界面来输入号码,把输入值赋值到里面。我直接把f()方法里的ms直接赋值,都可以用。从onCreate()方法里获取值就不行了
你先初始化ms String ms= ""; 然后在onCreate()赋值之后报错的地方是ms没取到值么?
whj11 2013-08-17
  • 打赏
  • 举报
回复
其他代码以前都能用,是直接把号码放在上面,现在弄了个界面来输入号码,把输入值赋值到里面。我直接把f()方法里的ms直接赋值,都可以用。从onCreate()方法里获取值就不行了
hack517 2013-08-17
  • 打赏
  • 举报
回复
传参数有问题: 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)
liu130620 2013-08-17
  • 打赏
  • 举报
回复
引用 10 楼 whj11 的回复:
[quote=引用 9 楼 u010177443 的回复:] 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大括号对应的大括号。
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 //会这样报错[/quote] 看不出来原因,我觉得可能是你其他代码的问题吧
whj11 2013-08-17
  • 打赏
  • 举报
回复
引用 11 楼 qiheanxiang 的回复:
[quote=引用 7 楼 whj11 的回复:] [quote=引用 6 楼 qiheanxiang 的回复:] f()方法是在什么时候执行?如果要保证调用f()方法就取到onCreate()方法给ms赋的值,你可以这样: 1:String ms = ""; 2:ms = md; (如5楼所说) 然后建立构造方法 public MainActivity(){ onCreate(Bundle savedInstanceState); } 关键问题在于f()取值时ms没被赋值,即这之前执行onCreate()与否。 另外String ms = md;这种方法肯定不行的
f()方法,在有人发短信时执行,,你觉得应该怎么做,看了你说的,还是有点不明白,[/quote] 如果这两个方法不能确定先执行onCreate方法的话,你可以把onCreate()方法的返回类型改成String类型,然后返回md,f()方法中直接返回onCreate()方法[/quote] 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; }
keepdaydayup 2013-08-16
  • 打赏
  • 举报
回复
引用 7 楼 whj11 的回复:
[quote=引用 6 楼 qiheanxiang 的回复:] f()方法是在什么时候执行?如果要保证调用f()方法就取到onCreate()方法给ms赋的值,你可以这样: 1:String ms = ""; 2:ms = md; (如5楼所说) 然后建立构造方法 public MainActivity(){ onCreate(Bundle savedInstanceState); } 关键问题在于f()取值时ms没被赋值,即这之前执行onCreate()与否。 另外String ms = md;这种方法肯定不行的
f()方法,在有人发短信时执行,,你觉得应该怎么做,看了你说的,还是有点不明白,[/quote] 如果这两个方法不能确定先执行onCreate方法的话,你可以把onCreate()方法的返回类型改成String类型,然后返回md,f()方法中直接返回onCreate()方法
liu130620 2013-08-16
  • 打赏
  • 举报
回复
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大括号对应的大括号。
whj11 2013-08-16
  • 打赏
  • 举报
回复
引用 9 楼 u010177443 的回复:
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大括号对应的大括号。
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 //会这样报错
whj11 2013-08-15
  • 打赏
  • 举报
回复
引用 7 楼 whj11 的回复:
[quote=引用 6 楼 qiheanxiang 的回复:] f()方法是在什么时候执行?如果要保证调用f()方法就取到onCreate()方法给ms赋的值,你可以这样: 1:String ms = ""; 2:ms = md; (如5楼所说) 然后建立构造方法 public MainActivity(){ onCreate(Bundle savedInstanceState); } 关键问题在于f()取值时ms没被赋值,即这之前执行onCreate()与否。 另外String ms = md;这种方法肯定不行的
f()方法,在有人发短信时执行,,你觉得应该怎么做,看了你说的,还是有点不明白,[/quote] 你说建立构造方法,那也不行,构造方法只执行一次吧,只会在类执行的第一次执行吧,
whj11 2013-08-15
  • 打赏
  • 举报
回复
引用 6 楼 qiheanxiang 的回复:
f()方法是在什么时候执行?如果要保证调用f()方法就取到onCreate()方法给ms赋的值,你可以这样: 1:String ms = ""; 2:ms = md; (如5楼所说) 然后建立构造方法 public MainActivity(){ onCreate(Bundle savedInstanceState); } 关键问题在于f()取值时ms没被赋值,即这之前执行onCreate()与否。 另外String ms = md;这种方法肯定不行的
f()方法,在有人发短信时执行,,你觉得应该怎么做,看了你说的,还是有点不明白,
keepdaydayup 2013-08-15
  • 打赏
  • 举报
回复
f()方法是在什么时候执行?如果要保证调用f()方法就取到onCreate()方法给ms赋的值,你可以这样: 1:String ms = ""; 2:ms = md; (如5楼所说) 然后建立构造方法 public MainActivity(){ onCreate(Bundle savedInstanceState); } 关键问题在于f()取值时ms没被赋值,即这之前执行onCreate()与否。 另外String ms = md;这种方法肯定不行的
whj11 2013-08-15
  • 打赏
  • 举报
回复
还是跟前面报的一样的错,还有其他的方法吗,才能使 md的值赋给 方法f()里的ms
valenon 2013-08-15
  • 打赏
  • 举报
回复
1,把你刚开始的赋值改了,只定义ms,不要赋值:
String ms = null;
2,在onCreate方法中,String md=map.get("username"); 这一句之后,加上:
ms = md;
whj11 2013-08-15
  • 打赏
  • 举报
回复
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 //这样做 他报的错
zyrobert 2013-08-15
  • 打赏
  • 举报
回复
赋值放在方法里呗

String md=map.get("username"); 
ms=md;     
whj11 2013-08-15
  • 打赏
  • 举报
回复
怎么才能使 md的值赋给 方法f()里的ms

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧