2015-02-09 109 views
2

我不明白爲什麼這個代碼給出錯誤,只要我輸入行 EditText input =(EditText)findViewById(R.id.editText); 空白活動你好世界的作品很好!FindViewById給出錯誤

這裏是Java代碼.....

package com.example.abhishektiwari.deletethis; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.widget.EditText; 


public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
EditText input=(EditText) findViewById(R.id.editText); 
} 

這裏是XML代碼..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" 
android:orientation="vertical"> 


<EditText 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/editText" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentEnd="true" 
    android:hint="Type the mathematical expression here" 
    /> 
<Button 
    android:layout_alignParentEnd="true" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:text="Get SVG" 
    android:id="@+id/button" 

    /> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Result" 
    android:textSize="30dp" 
    android:id="@+id/textView" 
    /> 

+0

調用findViewById其中 – 2015-02-09 12:28:02

+0

你必須創建在onCreate方法的意見存在ID。 – Jaky71 2015-02-09 12:28:45

+0

剛編輯你的文章... – chain 2015-02-09 12:29:30

回答

2

變化

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
EditText input=(EditText) findViewById(R.id.editText); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    EditText input=(EditText) findViewById(R.id.editText); 
} 

因爲你不能在一個成員函數的外部訪問視圖。

+0

謝謝!! @馬庫斯 – Abhishek 2015-02-09 13:58:24

+0

如果這個答案對您有用,請將它勾選爲已接受的答案:-) @ user3590660 – Marcus 2015-02-09 13:59:15

0

你不能在呼叫活動的方法,如findViewById()onCreate()前活動的生命週期。成員變量初始化還爲時尚早。在setContentView()之後將初始化移動到onCreate()

1

編輯您的活動

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    EditText input=(EditText) findViewById(R.id.editText); 
    } 
    } 

您不能訪問成員函數外的景色。

1

這是因爲你聲明並初始化了你的EditText超出了方法的範圍,當上下文仍然爲空時。移動此行

EditText input=(EditText) findViewById(R.id.editText); 

onCreate,後setContentView

1

在onCreate中使用它,或者只是創建一個方法,並把它放在那,然後在onCreate中調用函數。第一設置視圖後

EditText input=(EditText) findViewById(R.id.editText);