2012-05-13 58 views
1

我有一個主要活動類和找到類。我需要從find類訪問主要活動變量的名稱「name」。我試圖訪問下面的代碼片段,但我得到一個錯誤。我如何從另一個類訪問主要活動變量?Android訪問另一個類的主要活動變量

public class main extends Activity { 

    public static String name=null; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button1=(Button)findViewById(R.id.button1); 

     final EditText edittext = (EditText) findViewById(R.id.editText1); 

     button1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       name=edittext.getText().toString(); 

      } 
     });             
} 

我的第二類....

public class find { 

public void finder(){ 

    main mainactivity=new main(); 
    String incoming_name =mainactivity.name;//I can not use like that ? 
      // do something 
} 

}

回答

8

1)你不應該實例化一個活動,意圖開始活動

2)你聲明的變量public static,這樣你就可以直接引用它(不實例化類)由main.name ...

+0

如果我不希望它公開,該怎麼辦?我怎麼才能得到它 ? –

+1

@FranciscoCorralesMorales OOPS的基本概念說不能訪問類和它的內容,除非訪問修飾符是公開的! – IteratioN7T

4

你不想直接從另一個(外部)類訪問Activity的變量。這是一種不好的做法,因爲活動畢竟是UI的一部分,而不是應用程序的後端。

此外,請注意,在您的示例中,name屬性爲static,並且不屬於特定實例。

+0

那麼,在這種情況下,如何獲得edittext的值呢? –

+0

這需要了解類和查找器的目的之間的關係。 – MByD

+0

@MByD我的目的是在我的活動中有一個標誌,並且我想在用戶經歷一些過程之後從片段更新它。在活動中更新變量的正確方法是什麼? –

相關問題