【问题标题】:How to pass String value from one void method to another void method如何将字符串值从一个 void 方法传递到另一个 void 方法
【发布时间】:2019-06-07 13:50:47
【问题描述】:

我在同一个类中有两个 void 方法。 Method2 从 textview 获取数据并将其存储在字符串中。我想在 Method1 字符串中获取 Method2 字符串。 注意:这是一个安卓项目。 代码在这里:

class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
}

void Method2()
{
    //this place i want to get str1 value like this:
    // String str2=str1
}
void Method1(View view)
{
    String str1=textView.getText().toString();
}
}

【问题讨论】:

  • 使用全局变量怎么样?或者只是改变你的方法的返回值?
  • 为什么不能将str1 声明为类级变量?
  • 要么在类级别声明变量str1,要么将Method1的返回类型更改为返回字符串并返回此str1并从method2调用method1。 void Method2() { //这个地方我想像这样获取 str1 值: // String str2=method1(view) } String Method1(View view) { return textView.getText().toString(); }

标签: java android string void


【解决方案1】:

试试这个代码




   public class MainActivity extends AppCompatActivity {

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

public static String s1 ;
public static String s2 ;


    void Method1(View view) {
      s1 = textView.getText().toString();
    }
 void Method2() {
       s2 = s1 ;
    }
}

【讨论】:

  • 为什么 s1 和 s2 是静态的?
  • 因为方法会修改它们的值。
  • 方法也可以修改非静态变量。
【解决方案2】:

学习并遵循 Java 编码标准。这个简单的类没有通过测试。

方法 1 不应返回 void;它应该从视图返回字符串。

方法2不应该有一个空的参数列表;它应该有一个字符串参数,可以让你传入你想要的值。

public class MainActivity extends AppCompatActivity {

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

    public void method2(String s) {
        //this place i want to get str1 value like this:
        // String str2=str1
    }

    public String method1(View view) {
         return textView.getText().toString();
    }
}

您没有示例说明method1 将如何获得对View 的引用。

此实现将允许您从View 中获取String 并将其传递给method2。这就是你想要的吗?

【讨论】:

    【解决方案3】:

    一个简单的方法是给method2()添加一个参数

    void method2(String str1) {
        //this place i want to get str1 value like this:
        // String str2=str1
    }
    

    并从method1 调用它。

    【讨论】:

      【解决方案4】:

      假设您希望这两种方法的返回类型均为void,您将需要使用类变量。在您的代码中,str1Method1 的本地地址,不能从Method1 外部访问。使用类变量:

      class MainActivity extends AppCompatActivity {
          String str1; 
      
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
          }
      
          void Method2() {
              String str2 = str1;
          }
      
          void Method1(View view) {
              str1 = textView.getText().toString();
          }
      }
      

      或者,如果Method2 应该在Method1 之后执行:

      class MainActivity extends AppCompatActivity {
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
          }
      
          void Method2(String str) {
              String str2 = str1;
          }
      
          void Method1(View view) {
              String str1 = textView.getText().toString();
              Method2(str1); //pass the string to Method1
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-03-13
        • 1970-01-01
        • 2018-05-29
        • 2019-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多