2017-07-29 5 views
0

通知を作成できません。いくつかの記事のコードサンプルが私と同じように見えます。以下のコードと私が間違っている箇所を確認してください。Android、何もしない通知コードを作成する

以下、2つのクラスを貼り付けました。 MainActivityクラス。ボタンを1回クリックすると通知が生成されます。通知が作成される第2クラス。

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 
    NotificationBuilder nB=new NotificationBuilder(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       goToSecondActivity(); 
       nB.createNotify(); 
      } 

     }); 


    } 

    private void goToSecondActivity() { 


     Intent intent = new Intent(this, SecondActivity.class); 
     startActivity(intent); 

    } 
} 


**Second class** 

import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v4.app.NotificationCompat; 
import android.support.v4.app.TaskStackBuilder; 
import android.support.v7.app.AppCompatActivity; 

public class NotificationBuilder extends AppCompatActivity { 

    void createNotify() { 
     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentTitle("My notification") 
       .setContentText("Hello World!"); 

     Intent resultIntent = new Intent(this, MainActivity.class); 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     stackBuilder.addParentStack(MainActivity.class); 
     stackBuilder.addNextIntent(resultIntent); 

     PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
       0, PendingIntent.FLAG_UPDATE_CURRENT); 
     mBuilder.setContentIntent(resultPendingIntent); 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     mNotificationManager.notify(001, mBuilder.build()); 
    } 
} 

ノットとキットキャットのApisレベルで試してみました。 別の電話を使用してみましたが、同様の結果

答えて

0

NotificationBuilder nB=new NotificationBuilder();

は、あなたは、本質的にこのようなActivityを作成することになっていません。これは、いくつかの必要な内部コンポーネントが適切に初期化されないことを意味します。

これは、thisのすべてのインスタンスがcreateNotifyで期待どおりに機能しないことを意味します。コンテキストはMainActivityで、ビルダークラスではありません。

NotificationBuilderActivityに延長し、ContextをパラメータとしてcreateNotifyに渡します。 thisのほとんどの呼び出しをコンテキストに置き換えると、コードが修正されるはずです。

+0

お返事ありがとうございます。しかし、私は理解できません、私のコードでいくつかの編集をしてください。 –

関連する問題