2016-05-26 3 views
0

を取得します私のアプリケーションが残念なことにスクロールジェスチャーで停止した時。ここで は私のコードは、これは私のメインクラスは、私は、クラス内のTextViewの参照を取得したいが、私は例外

パブリッククラスMainActivityがAppCompatActivity {

TextView myText; 
Button myButton; 
private GestureDetectorCompat mDetector; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myText = (TextView)findViewById(R.id.myText); 
    myButton = (Button)findViewById(R.id.myButton); 
    mDetector = new GestureDetectorCompat(this, new MyGestureListener()); 

    myButton.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      myText.setText("I am clicked from button"); 
     } 
    }); 

} 

public TextView getTextView() 
{ 

    TextView txtView = (TextView)findViewById(R.id.myText); 
    return txtView; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    this.mDetector.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 

}

これは私のユーザ定義のクラス

あるが延びている

ありますクラスはGestuを拡張するreDetector.SimpleOnGestureListener {

private TextView myText; 
MainActivity m; 

public MyGestureListener(){ 

    m = new MainActivity(); 


} 
//MainActivity m = new MainActivity(); 
@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 

    myText.setText("Scroll ho v ja hun"); 

    return true; 
} 

}あなたはMYTEXT MyGestureListenerクラスを設定されることはありません

答えて

0

。これを試してみてください:

myText = (TextView)findViewById(R.id.myText); 
mDetector = new GestureDetectorCompat(this, new MyGestureListener()); 
mDetector.myText = myText; 

上記のmyTextを動作させるコードは、公開されている必要があります。

これを次のように変更します。 private TextView myText;これに

:あなたはMyGestureListenerコンストラクタで行うよう

public TextView myText; 
1

あなたはどんな活動を作成してはいけませんが、自分でオブジェクト。彼らはAndroidによって作成されます。

MyGestureListenerでも、TextViewは決して初期化されません。

代わりに、MyGestureListenerオブジェクトを初期化するときにTextViewへの参照を渡す必要があります。あなたはこのような何かを行うことができる。例えば

public class MainActivity extends AppCompatActivity { 

    TextView myText; 
    Button myButton; 
    private GestureDetectorCompat mDetector; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     myText = (TextView)findViewById(R.id.myText); 
     myButton = (Button)findViewById(R.id.myButton); 
     mDetector = new GestureDetectorCompat(this, new MyGestureListener(myText)); 

     myButton.setOnClickListener(new Button.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       myText.setText("I am clicked from button"); 
      } 
     }); 

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     this.mDetector.onTouchEvent(event); 
     return super.onTouchEvent(event); 
    } 
} 

class MyGestureListener extends GestureDetector.SimpleOnGestureListener { 

    private TextView myText; 

    public MyGestureListener(TextView textView) { 
     myText = textView; 
    } 

    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 

     myText.setText("Scroll ho v ja hun"); 

     return true; 
    } 
} 
+0

私は定義されたコードで私を導いてくださいAndroidに新しいだとどのように行うことができます – awais

関連する問題