2011-02-04 42 views
0

我想使用按鈕單擊將選擇參數傳遞給另一個類,該類將使用傳遞的參數構建地圖屏幕。我專注於讓我的按鈕操作起作用。一個使用我onCLickListener和onCLickView如下使用onClickView調用另一個類

Class1: 

public class Class1 extends Activity implements OnClickListener { 

    Class2 class2; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

.......... 

     Button button = (Button)findViewById(R.id.btn_configup1); 
     button.setOnClickListener(this);   
    } 

    public void onClick(View v) { 
     Class2 class2 = new Class2(); 
     //Save state.. selections and params and use bundle 
     //to pass into class2 
     class2.execMapBuild(); 

    }  


} 


Class2: 

公共類class2擴展MapActivity {

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.drawable.navup); 
} 


public void execMapBuild() {  
     finish(); //just in case we return. 
     Intent intent = new Intent(CLass2.this, Class2.class); 
     startActivity(intent); 

    } 

我所擁有的一切工作,除了所需的按鈕操作。我想要使​​用按鈕單擊操作,在Class1.onVlickView中單擊按鈕來調用Class2.execMapBuild。我有按鈕單擊捕獲操作並調用Class2上的execMapBuild方法。但是當它從startActivity(intent)移動到onCreate時,我得到一個NullPointerException。

我已經嘗試了其他幾種釘住這種方法,但這似乎是最好的,我似乎很接近找出它。我真的很感激解釋我可能錯過了什麼。 添加了最初未複製的代碼。

回答

2

要展開@Heiko Rupp的回答,如果你想Class2顯示地圖,它需要擴展像Activity。因此,你不能用普通的方法來調用它。您需要在清單中註冊Activity,然後使用Intent進行調用。這裏是那種東西的例子中,你應該做的:

public class Class1 extends Activity implements OnClickListener { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
     Button button = (Button)findViewById(R.id.btn_configup1); 
     button.setOnClickListener(this);   
    } 

    public void onClick(View v) { 
     Intent intent = new Intent(Class1.this,Class2.class); 
     intent.putExtra("key","data"); 
     ... 
     startActivity(intent); 
    } 
} 

public class Class2 extends MapActivity { 

    String mData; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      mData = extras.getString("key"); 
      ... 
     } 
     ... 
    } 
} 

可我也建議你使用比Class1Class2更具描述性的類名。

2

Class2沒有活動,所以系統不會調用Activity的回調。

如果它是一個Activity,你不能通過new Class2()調用它,因爲仍然沒有執行回調。

嘗試清理此問題,然後從開始從Class1開始Class2活動,就像您在execMapBuild()中所做的那樣。

+0

我會試試這個。我明白你的意思。我可以將所有內容都放到execBuildMap中,但是在startActivity()之後,它意圖使用NUllPointerException除外 – apesa 2011-02-05 01:12:45

+0

非常感謝。 – apesa 2011-02-05 01:24:44