2015-09-23 56 views
1

我是編程新手,並且自己被卡住了。我正在用java編寫一個eclipse中的android應用程序。創建Android的方法

我一直在測試一個應用程序,我的所有功能都在我的片段中的onCreateView中。我終於完成了所有的工作,但現在有點混亂。我打算將某些部分轉移到他們自己的方法中。

但是,當我在onCreateView中調用此方法時,它現在崩潰。

當前的工作程序是這樣的:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.profile_tab, container, false); 


    DatabaseHelper db = new DatabaseHelper(getActivity()); 
    db.createUser(new User("Sam")); 
    db.createUser(new User("Gabriel")); 
    username = db.getUser(IDnumber); 
    displayName= (TextView) rootView.findViewById(R.id.TextViewTest); 
    displayName.setText(username.getName()); 

    return rootView; 
    } 

當我把它修改這個:

public void displayData(){ 

    DatabaseHelper db = new DatabaseHelper(getActivity()); 
    db.createUser(new User("Sam")); 
    db.createUser(new User("Gabriel")); 
    username = db.getUser(IDnumber);displayName= (TextView) getActivity().findViewById(R.id.TextViewTest); 
    displayName.setText(username.getName()); 
} 

,並調用它onCreateView,它崩潰。

我很確定它與在第二次嘗試中更改爲getActivity()的rootView有關,但我不確定還應該將其更改爲什麼?

+1

你的錯誤是什麼? –

回答

0

只是聲明類視圖oncreateview方法之外,在oncreateview方法來初始化,所以你可以用它

View rootView 
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    rootView = inflater.inflate(R.layout.profile_tab, container, false); 


    displayData(); 



    return rootView; 
    } 


public void displayData(){ 

    DatabaseHelper db = new DatabaseHelper(getActivity()); 
    db.createUser(new User("Emma","Team", "School")); 
    db.createUser(new User("Sarah","team", "School")); 
    username = db.getUserFromTable(userIDTest); 
    displayName= (TextView) rootView.findViewById(R.id.TextViewTest); 
    displayName.setText(username.getUserName()); 
} 

替代方式只是初始化oncreateview視圖中的所有控件,並在該類中的任何位置使用它

+0

這工作!非常感謝! – Ethebee

0

而不是getActivity()只是通過使用ActivityName.this 給它的上下文。請從logcat發佈您的錯誤。

+2

這不會工作,他正在使用一個片段 –

1

初始化您的意見onCreate,並把其餘的在displayData方法

@Override 
public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.profile_tab, container, false); 

    displayName = (TextView) rootView.findViewById(R.id.TextViewTest); 
    displayData(); 

    return rootView; 
} 

public void displayData(){ 
    DatabaseHelper db = new DatabaseHelper(getActivity()); 
    db.createUser(new User("Emma","Team", "School")); 
    db.createUser(new User("Sarah","team", "School")); 
    username = db.getUserFromTable(userIDTest); 
    displayName.setText(username.getUserName()); 
} 
0

你需要按照這個過程創建方法init_var(rootView);然後只加這個context = getActivity();希望解決你的問題