2016-11-11 154 views
0

所以我試圖將我的應用程序連接到亞馬遜雲Nosql服務器DynamoDB,我一直遵循他們的教程,但似乎無法得到它的工作,因爲這個錯誤,保持發生:亞馬遜網絡服務DynamoDB錯誤com.amazonaws.auth.AWSCredentials

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.humber.industech.industechapp/com.humber.industech.industechapp.DataActivity}: 
java.lang.NullPointerException: Attempt to invoke interface method 'com.amazonaws.auth.AWSCredentials com.amazonaws.auth.AWSCredentialsProvider.getCredentials()' on a null object reference 

任何幫助獲取使用AWS設置將不勝感激,非常感謝!

代碼如下:

public class DataActivity extends AppCompatActivity { 

    private TextView t; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_data); 
     //setting custom font 
     t = (TextView) findViewById(R.id.textView3); 
     Typeface customFont = Typeface.createFromAsset(getAssets(),"fonts/Prezident.ttf"); 
     t.setTypeface(customFont); 
     saveData(); 
    } 

    public void saveData(){ 
     CognitoCachingCredentialsProvider credentialsProvider = CredentialProviderSingleton.getInstance(this); 
     AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider); 
     DynamoDBMapper mapper = new DynamoDBMapper(ddbClient); 
     Book book = new Book(); 
     book.setTitle("Test"); 
     book.setAuthor("Charles Dickens"); 
     book.setPrice(1299); 
     book.setIsbn("1235674"); 
     book.setHardCover(false); 
     mapper.save(book); 
    } 
} 



public class CredentialProviderSingleton { 

    static CognitoCachingCredentialsProvider credentialProvider; 

    public static CognitoCachingCredentialsProvider getInstance(Context context){ 
     if (credentialProvider == null){ 
      CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
        context.getApplicationContext(),"POOL_ID", Regions.US_WEST_2); 
     } 
     return credentialProvider; 
    } 
} 

回答

1

bug是在CredentialsProviderSingleton

您創建一個crednetials提供商作爲一個新的變量

CognitoCachingCredentialsProvider credentialsProvider =新CognitoCachingCredentialsProvider( context.getApplicationContext() ,「POOL_ID」,Regions.US_WEST_2);

但是你返回類變量credentialProvider(注意它在證書的末尾沒有's')。這個變量是空的,因爲它沒有被聲明過。

+0

因此,將CognitoCachingCredentialsProvider credentialsProvider更改爲credentialProvider。 – jarmod