2010-11-03 2 views
1

У меня есть два класса, которые расширяют Activity и требуют вызова другого метода класса для основного класса при разработке android. Я сделал что-то вроде subclass sub = new subclass(). Это не работает.Как вызвать Java-методы из одного класса в другой класс в Android-разработке?

В 1-м классе активности

package org.me.intent_testing; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.*; 
import android.view.*; 
import android.content.Intent; 

public class FirstActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Button orderButton = (Button)findViewById(R.id.order); 
    Button orderButton = new Button(this); 
    orderButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
     Intent intent = new Intent(FirstActivity.this, secondActivity.class); 
     startActivity(intent); 
     } 

    }); 
    } 
} 

В классе secondActivity

В AndroidManifest.xml

<?xml version="1.0" encoding="UTF-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.me.intent_testing"> 
    <application> 
     <activity android:name=".FirstActivity" android:label="FirstActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <activity android:name=".secondActivity" /> 
    </application> 

</manifest> 

В R.java

package org.me.intent_testing; 

public final class R { 
    public static final class attr { 
    } 
    public static final class layout { 
     public static final int main=0x7f020000; 
    } 
    public static final class string { 
     public static final int app_name=0x7f030000; 
    } 
} 

У меня проблема, связанная между двумя классами.

+2

вывесить голый минимум классов, необходимых для описания проблемы, поэтому мы можем попытаться объяснить, что это неправильно – KevinDTimm

+0

вы хотите, чтобы вернуться к первой активности от второй? Вы должны снова использовать намерение, чтобы вернуться и не вызвать финиш(). –

ответ

2

Могу ли я знать, почему вы хотели бы это сделать? Если этот метод настолько важен для обоих классов, то создайте его внутри вспомогательного класса (который не расширяет Activity) и создайте его объект в обоих классах, а затем с этим объектом получите доступ к этому методу.

0

Попробуйте просто обозначить требуемый метод как статический. Но помните, что в этом случае вызываемый метод не должен зависеть от любых нестатических переменных-членов методов класса.

+0

Что не просто использовать язык без объектов, то если он проигнорирует все преимущества объектов? если он подклассифицируется, ему не хватает чего-то большего. – KevinDTimm

+0

Почему бы не использовать другой язык? Потому что андроид действительно не дает выбора языка. Я имею в виду, да, есть альтернативы, которые компилируются для davlik, но инструменты не полностью готовы идти прямо под нос, в то время как ndk не обеспечивает ни возможности писать цельное приложение, ни доступ к большинству api. –

+0

@Chris - это должно было быть риторическим - дело в том, что если вы не можете использовать инструмент правильно, единственный выбор - использовать новый инструмент или научиться правильно использовать инструмент. потому что нет другого инструмента, что осталось? – KevinDTimm

2

SubClass sub=new SubClass(); создает объект класса SubClass.

Это не метод вызова.

введите код здесь

Если метод определен в классе SubClass, то вы можете вызвать его с помощью его объекта и точка оператора.

sub.MethodName();

Смежные вопросы