簡體   English   中英

Java在實現Android Activity時找不到符號

[英]Java cannot find symbol when implementing Android Activity

我正在編寫我的第一個android應用程序,遇到了一些麻煩。 考慮以下代碼:

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState{
    super.onCreate(savedInstanceState);
    TextView textView;
    textView = new TextView(this);
    textView.setTextSize(40);
    //textView.setText("TEST");
    setContentView(textView);
}

只要setText行保持注釋狀態,此代碼便會編譯。 如果我取消注釋,則會出現以下錯誤: cannot find symbol: variable textView

我在這里做錯什么嗎? 我是android的新手,距離我編寫任何Java已有好幾年了(我寫了更多的C語言,而我的直覺往往使我誤入歧途...)

編輯:

此功能是此處示例代碼的簡化: http : //developer.android.com/training/basics/firstapp/starting-activity.html

這個例子錯了嗎? 看來我不必在清單中創建這樣一個簡單的視圖,這對我來說似乎是Java鏈接器錯誤? 感謝您的答復,但我仍然無法理解問題所在。

您在哪里出錯了:

-您應在嘗試引用任何視圖之前調用setContentView()

setContentView()采用包含布局的XML文件的名稱

-您需要使用findViewById在JAva代碼中引用布局中的TextView

@Override
protected void onCreate(Bundle savedInstanceState{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.name_of_your_xml_file_which_has_the_layout);
    TextView textView;
    textView = (TextView)findViewById(R.id.id_of_the_textView_as_given_in_your_layout.xml);
    textView.setTextSize(40);
    textView.setText("TEST");
}

編輯: 此處給出的代碼動態創建了一個TextView,我的答案包含的方法使用靜態布局,僅在Java代碼中引用了TextView。 這是執行此操作的標准方法,因為一旦事情變得復雜,就很難實現動態布局。 現在,看起來很容易,因為只有一個TextView。 但是,有了更多的UI元素,您只會招來更多麻煩(我認為) 我建議您遵循靜態布局方法,尤其是因為您是從Android開始的。

您可以在布局文件中創建一個文本視圖,例如:

<TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

然后在代碼中找到它,然后將其分配給變量:

TextView textView = (TextView)findViewById(R.id.textView1);
// Now you can do whatever you want with this textview
  1. setContentView(tv)首先將文本設置為textview。 您可以執行以下操作。

     public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv= new TextView(this); setContentView(tv); tv.setText("hello"); } } 
  2. 在你的main.xml中

     <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> 

在您的活動中

    TextView textView = (TextView)findViewById(R.id.textView1);

我建議您參加第二部分。 您的xml用於定義UI,該UI與MainActivity.java文件中定義的邏輯分開。 您對UI進行的任何更改都不需要對Java文件進行更改。 在您的xml文件中,您可以設置文本視圖大小。 您無需更改.java文件中的邏輯。

同樣,您對.java文件進行的更改,而不需要對xml進行更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM