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メソッドに入ることはありません。
更新されたコードを配置しました。
新しいクリーンなプロジェクトを作成しました。コードは次のとおりです。
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);
}
}
それでも同じ問題トーストが表示されないプログラムフロー/制御は、戻るが押されるたびにtrueを返すとsuperステートメントを返すの両方に行きますそれがどのように起こるべきか実際にはわかりません本当に私を夢中にさせます小さな何かでなければなりません私は間違っています。助けてください。