Trie string iterations
This doesn't look too bad to me, though it would be nice to have the full source code that I could run. I'll comment on the things that stand out to me, though.

Unncessary logic

public boolean hasNext() {
    if (position &lt; this.trie.nodeCount()) return true;
    return false;
}


can be written simply as 

public boolean hasNext() {
    return position &lt; this.trie.nodeCount();
}


Whitespace is your friend

This is purely stylistic, but to me

    if (hasNext()) {


is much easier on the eyes than

    if(hasNext()){


A lot of IDEs provide automatic formatting to do this for you, too (In Eclipse, Window -> Preferences -> Java -> Code Style -> Formatter).

More on the next method


Avoid nulls if you can. See Google Guava's rational and Effective Java Item 43. If you initialize next to "" instead of null, you can avoid some potential errors downstream.
This can be simplified:

position++;
current = current.children[position];


to just

current = current.children[++position];

Alarm bells should be going off anytime you're iteratively adding to a String. You should be using a StringBuilder instead. Read more about them here.
Using an if statement without brackets is rarely a good idea.
Some standards discourage more than one return statement per method.


With that said, here is how I would refactor the method:

public String next() {
    StringBuilder next = new StringBuilder();

    if (hasNext()) {
        current = trie.root.children[position];
        while (!current.children[position].isEndOfWord()) {
            next.append(current.children[++position]);
            if (current.isEndOfWord()) {
              break;
            }
        }
    }

    return next.toString();
}


Regarding TrieNode


Why are the fields protected? This suggests that the class is to be extended. If that's the case, TrieNode should be abstract (See Open-Closed principle and Effective Java Item 17: "Design and document for inheritance or else prohibit it").
If letter and parentNode variables don't change, you can make them final (again, IDEs like Eclipse can also do this automatically for you).
On the line

protected TrieNode[] children = new TrieNode[26];


26 is a magic number, and should be replaced with a constant.


Final thoughts on addWord


Use a for loop instead of the current while loop. Then you can remove two lines that deal with updating index.
Instead of 

TrieNode child = current.children[letters[index] - 97];


you should be able to go

TrieNode child = current.children[letters[index] - 'a'];


which has the benefit of not using a magic number and is more clear.