EditText View返回null

时间:2016-05-08 22:28:47

标签: java android android-fragments null

我有两个活动 - 一个Home片段活动和一个正常的Options活动。

在我的家庭片段活动中,我尝试使用从Options活动中检索到的数据来更新EditText视图。

不幸的是,由于某种原因,片段活动无法检测到我的更新视图。我不完全确定原因。这是我的功能:

//update text box
public void updateUserData (String[] userArray){

    Log.d("User Update:", "beginning...");
    //get username
    EditText et=(EditText)getActivity().findViewById(R.id.Input_Name);

    if (et == null) {
        Log.d("ERROR:", "View returning null");
    }

    if (userArray[0] != null) {
        Log.d("Updating name:", userArray[0]);
        et.setText(userArray[0]); }

    }

奇怪的是......用于检索EditText View的公式在我的代码的其他部分中运行得非常好。但在这里它总是返回null。有什么建议?

编辑:这是我在OnCreateView中调用函数的地方:

   if(getActivity().getIntent() != null && getActivity().getIntent().getExtras() != null) {
        String[] prelimUserArray = getActivity().getIntent().getExtras().getStringArray("userArray");
        updateUserData(prelimUserArray);
    }

1 个答案:

答案 0 :(得分:3)

修改

移动此代码段:

if (getActivity().getIntent() != null && getActivity().getIntent().getExtras() != null) {
    String[] prelimUserArray = getActivity().getIntent().getExtras().getStringArray("userArray");
    updateUserData(prelimUserArray);
}

onViewCreated方法,该方法将在视图膨胀后调用。

public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
    // Your code here
}

查看此图片,了解有关Fragment生命周期的更多信息。

Fragment's lifecycle

确保在片段updateUserData回调被触发后调用onCreateView()方法。

尝试使用getView()中提到的getActivity()代替getActivity()

  

getView()返回托管片段的Activity,而EditText返回onCreateView膨胀和返回的视图。后者仅在onCreateView返回后才返回值!= null。

此外,正如评论中所述,请检查您的 try (RepositoryConnection conn = rep.getConnection()) { ValueFactory vf = conn.getValueFactory(); File file = new File("/path/to/weirdlyformattedrdffile.txt"); // open the file for reading try (BufferedReader br = new BufferedReader(new FileReader(file))) { String line; // start a transaction conn.begin(); // read the file line-by-line while ((line = br.readLine()) != null) { // each line is an RDF triple with a subject, predicate, and object String[] triple = line.split("|"); IRI subject = vf.createIRI(triple[0]); IRI predicate = vf.createIRI(triple[1]); IRI object = vf.createIRI(triple[2]); // add the triple to the database conn.add(subject, predicate, object); } // commit the txn when all lines are read conn.commit(); } } 确实是否具有ID Input_Name