我刚刚开始在android中进行开发,并被这个想法所困扰

我创建了两个活动,一个是HomeActivity,另一个是LoginActivity。我想在HomeActivity中放最少的代码,并在其他活动中放所有其他操作。

我的用例是我在HomeActivity上放置了onclick事件,并在LoginActivity中编写了onclick方法实现。但是我无法调用LoginActivity onclick方法实现。另外,HomeActivity和LoginActivity都具有相同的布局(activity_main.xml)

文件如下:

HomeActivity.java

public class HomeActivity extends Activity {

  private static String TAG = HomeActivity.class.getSimpleName();
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
   }
}


LoginActivity.java

 public class LoginActivity extends Activity {
   private static String TAG = LoginActivity.class.getSimpleName();

   @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
   }

  public void onLogin(View view){
     // some actions
   TextView loginText = (TextView)findViewById(R.id.login);
  }

  }


activity_home.xml

  <TextView
    android:id="@+id/login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
  />
  <Button
     android:id="@+id/login_bt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick = "onLogin"
   />


HomeActivity和LoginActivity都使用相同的布局activity_home。这是正确的并且可能在android中做到这一点。
其次,如果有可能如何在LoginActivity上调用onLogin,以便我可以将文本设置为TextView。

最佳答案

创建扩展CustomActivity的自定义类Activity

private class CustomActivity extends Activity
{
    public void onLogin(View view)
    {
        TextView loginText = (TextView) findViewById(R.id.login);
    }
}


然后用LoginActivity扩展HomeActivityCustomActivity。这样,onLoginLoginActivity都可以使用HomeActivity方法,如果需要更改在onLogin中执行的操作,则可以在任何子类中覆盖它。

如果按原样使用上述方法,请确保LoginActivityHomeActivity的布局都具有ID为TextViewlogin

关于java - 如何在另一个 Activity 上调用onclick?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25550416/

10-10 09:27