2017-04-26 13 views
-1

私はレイアウトをロードしているライブラリプロジェクトを作成し、アプリケーションプロジェクトから呼び出すメソッドを定義するシナリオがあります。アクティビティメソッドは、他のクラスのアンドロイドでoncreateの前に呼び出されます

public class LibraryActivity { 


public LibraryActivity() { 

} 


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

} 


    public void bindViews() { 

     bChart = (BarChart)findViewById(R.id.barchart); 
} 

    public void setData(int count, float range) { 

    //definition of the method 
    // I have to user bChart view here 
    System.out.println("part 1 "+bChart); <---- this is null 
} 

これで、AARプロジェクトが正常に作成されました。このプロジェクトでは、このsetDataを使用したいと思います。私は、コード

Intent in = new Intent(MainActivity.this,LibraryActivity.class); 
      startActivity(in); 

      LibraryActivity barChartCallBack = new LibraryActivity(); 
      LibraryActivity.setData(15,25); 

下に使用することにより、他のプロジェクトからこれを実行すると、私の方法にsetDataは、OnCreateのようfindviewbyidヌルを与える前に、最初の呼び出し得たので は、だから私はbChartにNULLポインタを得ましたbChartです。

+0

「Bundle」を介してそのデータを渡します。 – azizbekian

+0

SetDataメソッドは、このメソッドが呼び出される前にロードする必要があるビューを持っています。データを渡すことができますが、ビューがロードされていないため、メソッドがコールを最初に取得するため、NULLポインタを取得します。 –

答えて

3

全く異なるLibraryActivityオブジェクトにデータを設定しています。まず、システムを起動する意図をシステムに伝え、表示されない別のシステムを開始しますが、それを使用してsetDataを呼び出します。 Androidデベロッパーサイトで記事を読むまで

https://developer.android.com/training/basics/firstapp/starting-activity.html

は、基本的には、意図してでエキストラを介してデータを渡す必要があります。

+0

私はライブラリクラスで最初に呼び出すので[私は他のプロジェクトからこのメソッドを呼び出すので]、oncreateはそのためにロードしているので、setDataメソッドで使用する必要があるビューを取得できません。 –

+0

外部からsetDataを呼び出さないでください。代わりにin.putExtra(...)を使用してください –

関連する問題