![](/img/trans.png)
[英]Android studio - kotlin class not found when implementing in java file - error "cannot find symbol class"
[英]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
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"); } }
在你的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.