在Android活动中放置onclick监听器的最佳位置在哪里?我见过两种不同的方式。一种方法是将它们放在onCreate方法中,另一种方法是将它们放在onCreate方法的下方和外部。
我刚刚启动了一个新的Android应用程序,我很困惑哪里是最好的地方。
两种方式如下所示。
psudo代码示例一;
oncreate方法中的onclick方法
MainActivity extends Activity{
onCreate(){
onClick listeners
} // end of onCreate method
} // end of MainActivity class
psudo代码示例二;
在oncreate方法下面和外面点击
MainActivity extends Activity{
onCreate(){
} // end of onCreate method
onClick listeners
} // end of MainActivity class
答案 0 :(得分:4)
两种方式都是正确的。你如何组织代码实际上是为了可读性。如果onCreate()
中有太多的监听器,那么之后就很难读取代码。但是,如果您只有一个并且它是一个衬垫,那么最好将它放在onCreate()
中。
答案 1 :(得分:1)
你甚至可以使用xml文件放置onClicklistener
。
即
你的xml中的使用这个标签:
android:onClick="startActivityB"
然后在java文件中
public void startActivityB(View v) {
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
}
答案 2 :(得分:0)
由您决定如何编写活动代码。
如果你想要,你可以在onCreate()
中编写onclick的所有代码,但如果你有更多按钮或视图要处理,你会为每个按钮或视图单独写onClick,那么你的onCreate()
看起来会如此笨拙。
在这种情况下,您可以为所有按钮创建公共onClickListener
,并单独编写逻辑,使您的代码看起来很漂亮,您也可以选择onCreate()
。
这对我来说是最好的方式:
btn1.setOnClickListener(m_onClickListener); /** * Common click listener */ OnClickListener m_onClickListener=new OnClickListener() { @Override public void onClick(View p_v) { switch(p_v.getId()) { case R.id.btn1: break; } } };
答案 3 :(得分:0)
您可以同时使用这两种方式。我认为工作势头相同
如果使用第二种方法代码的可读性会很好
注意:还有另一种方法在my_layout.xml中提供onClick
。但是现在有一天片段来扮演它的角色所以它没被广泛使用(REFER)。
答案 4 :(得分:-3)
你应该总是喜欢第二个。如果你把它放在创建中,它也会起作用。但是你不希望每次加载活动时都这样做。
这是一个例子
package com.damon86.toastExample;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
public class ToastExample extends Activity implements OnClickListener {
/** Called when the activity is first created. */
// The text and button used on the display.
EditText toastText = null;
Button showToast = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create a new Layout.
LinearLayout rootLayout = new LinearLayout(getApplicationContext());
// Create textfield
toastText = new EditText(getApplicationContext());
toastText.setText("Hello Toast!");
// Create button and set OnClickListener
showToast = new Button(getApplicationContext());
showToast.setText("Show Toast");
showToast.setOnClickListener(this);
// Add components to the Layout.
rootLayout.addView(toastText);
rootLayout.addView(showToast);
// Add the layout as the content view for the application.
setContentView(rootLayout);
}
/**
* Implemented method - onClick.
* Show the user a piece of toast.
*/
@Override
public void onClick(View v) {
// Create a piece of toast.
Toast pieceToast = Toast.makeText(getApplicationContext(), toastText.getText(), Toast.LENGTH_SHORT);
// Show the toast.
pieceToast.show();
}
}