2016-09-28 22 views
0

クラスからのフラグメントにあるメソッドを呼び出そうとしています。今私はエラーを取得しています:非静的メソッドcheckWriteStoragePermission()は、静的コンテンツから参照することはできません。私は本当にアイデアがありません。私は約2日間は何の結果も得られていない。静的メソッドではない静的メソッドcheckWriteStoragePermission()を参照することはできません

私はメソッドを呼び出ししようとしていますクラス:

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

public static String sRecordDate; 

public void onMessageReceived(RemoteMessage remoteMessage) { 

    Intent intent = new Intent(this,MainActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this); 
    notificationBuilder.setContentTitle("FCM NOTIFICATION"); 
    notificationBuilder.setContentText(remoteMessage.getNotification().getBody()); 
    notificationBuilder.setAutoCancel(true); 
    notificationBuilder.setSmallIcon(R.mipmap.ic_launcher); 
    notificationBuilder.setContentIntent(pendingIntent); 
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(0,notificationBuilder.build()); 

    for (Map.Entry<String, String> entry : remoteMessage.getData().entrySet()) { 
     String key = entry.getKey(); 
     String value = entry.getValue(); 

     Log.d(":", "key, " + key + " value " + value); 

     sRecordDate = value; 

     RecordingMode.checkWriteStoragePermission(); //HERE I AM GETIING THE ERROR 
    } 
} 

断片クラスのメソッド:

public void checkWriteStoragePermission() { 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if(ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
       == PackageManager.PERMISSION_GRANTED) { 
      mIsRecording = true; 
      try { 
       createVideoFileName(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      startRecord(); 
      mMediaRecorder.start(); 
      mChronometer.setBase(SystemClock.elapsedRealtime()); 
      mChronometer.setVisibility(View.VISIBLE); 
      mChronometer.start(); 
     } else { 
      if(shouldShowRequestPermissionRationale(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
       Toast.makeText(getActivity(), "app needs to be able to save videos", Toast.LENGTH_SHORT).show(); 
      } 
      requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_EXTERNAL_STORAGE_PERMISSION_RESULT); 
     } 
    } else { 
     mIsRecording = true; 
     try { 
      createVideoFileName(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     startRecord(); 
     mMediaRecorder.start(); 
     mChronometer.setBase(SystemClock.elapsedRealtime()); 
     mChronometer.setVisibility(View.VISIBLE); 
     mChronometer.start(); 
    } 
} 

私はこれを簡単に解決することができますか?私はこれを静的メソッドに変換することはできません。

敬具、

+0

あなたはこの行書かれている「RecordingMode.checkWriteStoragePermissionを();」記録モードのクラス名またはオブジェクト名ですか? – Sakalya

+0

RecordingMode.classはMy Fragment、MyFiebaseMessagingService.classは外部クラスです。 –

答えて

3

しかし、それは(クラスの名前で、それを呼び出す)の静的メソッドであるかのようあなたは、あなたがこの方法を持っているし、そのインスタンス上でそれを呼び出すクラスのインスタンスを作成するには、この方法を使用しています。

Fragment fragment = new Fragment(); 
fragment.checkWriteStoragePermission(); 
+0

ありがとうございました!それは私が思ったよりも簡単でした.. –

0

あなたの方法checkWriteStoragePermissionstaticはありませんが、あなたのサービスから直接呼び出そう:あなたは、それはその後、フラグメント」クラスは、 `だと述べました。 そのようにメソッドを編集してみてください。

public static void checkWriteStoragePermission() { 
.... 
} 
+0

私はこれを行うことはできません。メソッドは非静的でなければならない –

+0

投稿されたソリューションより@Whatzs投稿された方法です – Lennart

関連する問題