2014-03-06 29 views
3

我檢索一個TextView的價值這樣如何使用一個方法的變量的另一種方法在Java中(機器人)

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.calculation); 
    TextView heading = (TextView) findViewById(R.id.paper_name); 
    ...... 
} 

我在同一個類中的另一種方法

@Override 
public void onClick(View v) { 
    int BLACK_AND_WHITE_MULTIUPLIER = 4200; 
    int COLOR_MULTIUPLIER = 6400; 
    switch (v.getId()) { 
     case R.id.btCalculate: 
     int multiplier = rbColor.isChecked() ? COLOR_MULTIUPLIER : BLACK_AND_WHITE_MULTIUPLIER; 
     int column = Integer.parseInt((String) spColumn.getSelectedItem()); 
     int inch = Integer.parseInt((String) spInch.getSelectedItem()); 
     tvAmount.setText((multiplier * column * inch) + ""); 
     break; 
    } 
} 

我想根據我從onCreate方法得到的標題的值來設置COLOR_MULTIUPLIERBLACK_AND_WHITE_MULTIUPLIER的值。可能嗎?

+0

在'onCreate'方法之外聲明您的TextView'heading'。在'onCreate'裏面你爲它賦值。現在你的'onClick'方法可以訪問可變的'標題'。 – csmckelvey

+0

你應該使用全局變量標題應該是全局的,而不是本地的。在類 – Unii

+0

中聲明TextView標題您的意思是獲取textview的值並將其轉換爲「int」,以便將其設置爲「MULTIUPLIERS」? – user3055552

回答

1

更新聲明你TextView在一流水平...

TextView heading; 

protected void onCreate(Bundle savedInstanceState) 
    { 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.calculation); 

     heading = (TextView) findViewById(R.id.paper_name); 
     heading.setText("something"); 

      ...... 

然後訪問它在onClick()方法如下...

@Override 
public void onClick(View v) 
{ 
    int BLACK_AND_WHITE_MULTIUPLIER = 4200; 
    int COLOR_MULTIUPLIER = 6400; 
    switch (v.getId()) 
    { 
     case R.id.btCalculate: 

      int multiplier = 0; 

      if (heading.getText().toString.equals("something")) { 

       multiplier = COLOR_MULTIUPLIER; 

      } else { 

       multiplier = BLACK_AND_WHITE_MULTIUPLIER; 

      } 

      //int multiplier = rbColor.isChecked() ? COLOR_MULTIUPLIER 
      //  : BLACK_AND_WHITE_MULTIUPLIER; 
      int column = Integer.parseInt((String) spColumn 
        .getSelectedItem()); 
      int inch = Integer.parseInt((String) spInch.getSelectedItem()); 
      tvAmount.setText((multiplier * column * inch) + ""); 
      break; 
    } 
} 
+0

感謝它幫助我很多 –

+0

它能解決您的問題嗎? –

+0

是的,它:) –

1

移動TextView heading;以便它是一個類變量而不是局部變量,然後它將在整個班級中都可以訪問。

然後它可以在onCreate被intialized和讀取或onClick

1

就像我在我的comment中所說的,您只需要使heading屬於整個對象的變量,而不僅僅是onCreate方法。你以下面的方式做到這一點。

public class MyActivity extends Activity { 

    TextView heading; //Declared outside of onCreate 

    protected void onCreate(Bundle savedInstanceState) { 
     heading = (TextView) findViewById(R.id.paper_name); //Assigned inside of onCreate 
    } 
} 

然後該變量內變爲可訪問的onClick

public void onClick(View v) { 
    heading.getText(); //Or whatever you need to use it for 
} 
1

聲明你的TextView航向onCreate方法即以外在類級別。在onCreate中爲它賦值並且現在在onClick方法中可以訪問可變標題並獲取它的值。

相關問題