package woot.wat.wen;
import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class HmmActivity extends Activity implements OnKeyListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//RelativeLayout Relay=(RelativeLayout) getResources().getLayout(R.layout.main);
ViewGroup group = (ViewGroup) findViewById(R.id.relativeLayout1);
TextView tv=(TextView) findViewById(R.id.tv1);
MarginLayoutParams mapara = new MarginLayoutParams(tv.getLayoutParams());
mapara.setMargins(225, 260, 120, 120);
LayoutParams params=new RelativeLayout.LayoutParams(mapara);
tv.setLayoutParams(params);
group.setFocusable(true);
group.setOnKeyListener(this);
int children = group.getChildCount();
for (int i = 0; i < children; i++) {
View child = group.getChildAt(i);
child.setFocusable(true);
child.setOnKeyListener(this);
}
//tv.setOnKeyListener(this);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// back=true;
// do something on back.
Toast.makeText(this, "Back key pressed", Toast.LENGTH_SHORT);
System.out.println("WTF");
return true;
}
else
return super.onKeyDown(keyCode, event);
}
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK /*&& event.getRepeatCount() == 0*/) {
// back=true;
// do something on back.
Log.d("backk", "goingoin backback");
return true;
}
else
// TODO Auto-generated method stub
return super.onKeyDown(keyCode, event);
//return false;
}
}
コードでわかるように、私はバックキーを押したときに何かをしようとしていますが、onkeyコードは決して使用されていないようです。 プログラムは、バックが押されるたびに、エミュレータとデバイスの両方でonKeyメソッドに入るようなことはありません。何が間違っていますか?はOnkeylistenerに入っていませんか?
私は更新されたコードを入れました。
私はコード
package you.packag.namespac;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class BlActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_BACK){
Toast.makeText(this, "Back key pressed", Toast.LENGTH_SHORT);
return true; //that is important
}else
return super.onKeyDown(keyCode, event);
}
}
はまだ同じproblem.Theトーストがdisplayed.Theプログラムの流れ/制御が真のリターンの両方に行くとスーパーreturn文されていない新しいクリーンproject.Heresを作成しました[OK]をそれがどうやって起こっているのかは本当にわかりません。本当に私を夢中にしています。私は間違っています。助けてください。
よく使用していますkeydownプログラムはif(keycode back)に入るようですが、それはログを出力するように見えます。押されているバックキーであっても、常に 'else return super'に行くようです。 – shady2020
@ shady2020は、 'else super'ではなく' else super'に行くように見えます(異なる行に配置しようとする)。あなたはこの瞬間を捉えるためにブレークポイントを置いていますか、それともちょっとした直感ですか? ) –
ブレークポイント...ステップ/ステップイン等...バックを押すとifブロックとelseブロックの両方に行きます – shady2020