2016-12-07 13 views
0

フラグメントを使用してページをスワイプするためのフラグメントページャアダプタを実装したアプリケーションがあります。次に、フラグメント上にEditTextとTextViewがあります。 MainActivity.javaAndroid Studio - EditText.addTextChangedListenerが機能しない

package testing.com.testing; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 

import layout.page1; 
import layout.page2; 

public class MainActivity extends AppCompatActivity { 

ViewPager mViewPager; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(new SamplePagerAdapter(
      getSupportFragmentManager())); 

} 


public class SamplePagerAdapter extends FragmentPagerAdapter { 

    public SamplePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 

     if (position == 0) { 
      return new page1(); 
     } else 
      return new page2(); 
    } 

    @Override 
    public int getCount() { 
     return 2; 
    } 
} 

} 

マイfragment.javaで

package layout; 


import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.text.Editable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.EditText; 
import android.widget.TextView; 

import testing.com.testing.R; 


public class page1 extends Fragment { 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.page1, container, 
      false); 
    return rootView; 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    EditText text; 
    TextView textv; 
    text = (EditText) getView().findViewById(R.id.p1Name); 
    textv = (TextView) getView().findViewById(R.id.textView); 

    text.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      textv.setText(s); 
     } 
    }); 
} 

} 

は、しかし、それは動作しません、私はTextWatcherにエラーが出るので、私は、フラグメントにEditText.addTextChangedListenerを実装すると、エラー:シンボルクラスTextWatcherを見つけることができません。タスク ':appcompileDebugJavaWithJavac'の実行に失敗しました。誰も私を助けてくださいすることができます。..

答えて

0

onActivityCreated(...)方法であなたのフラグメント内部

あなたのフラグメントのレイアウトでR.id.p1NameR.id.textViewと仮定するとのEditTextへの参照を取得し、あそこaddTextChangedListenerを設定します。

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

text = (EditText) getView().findViewById(R.id.p1Name); 
textv = (TextView) getView().findViewById(R.id.textView); 

text.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     textv.setText(s); 
    } 
}); 
} 
+0

そここんにちは、返信に感謝!私のfragment.javaで、コードを貼り付けて追加しました。 EditText text; TextView textv; TextWatcherのエラーが発生しました( 'TextWatcher'のシンボルを解決できません) –

+0

さて、今は動作していますか? – Nitesh

+0

いいえ、これが表示されます FAILURE:例外が発生してビルドに失敗しました。 *何が問題になりましたか: タスク ':app:compileDebugJavaWithJavac'の実行に失敗しました。 >コンパイルに失敗しました。詳細については、コンパイラのエラー出力を参照してください。 *試してください: --stacktraceオプションを指定して実行すると、スタックトレースが取得されます。より多くのログ出力を得るには、--infoまたは--debugオプションを指定して実行します。 BUILD FAILED –

関連する問題