T
Tom Com
Fortgeschrittenes Mitglied
- 12
Hallo!
Ich wollte eine Test-APP erstellen, bei der man in ein Eingabefeld einen Namen und in ein anderes eine Telefonnummer eingibt. Drückt man einen Button kann man eine neue Nummer hinzufügen, drückt man nochmal noch eine Nummer... Anschließend wird alles in die Kontakte App eingetragen. Derzeit sieht meine Anwendung so aus:
MainActivity.java
activity_main.xml
Doch da kriege ich dann folgende Fehlermeldung, wenn ich drei Nummern eingebe:
Was muss ich ändern, damit meine App läuft?
Danke für Antworten!
Ich wollte eine Test-APP erstellen, bei der man in ein Eingabefeld einen Namen und in ein anderes eine Telefonnummer eingibt. Drückt man einen Button kann man eine neue Nummer hinzufügen, drückt man nochmal noch eine Nummer... Anschließend wird alles in die Kontakte App eingetragen. Derzeit sieht meine Anwendung so aus:
MainActivity.java
Code:
package test.kontakte;
import android.app.ActionBar;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends Activity {
EditText editText, editText2, editText3;
Button button;
Button button2;
LinearLayout ll;
int integer = 0;
private static final int RQ = 1234;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
editText2 = (EditText)findViewById(R.id.editText2);
ContentValues[] v2;
ll = (LinearLayout)findViewById(R.id.ll);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
String name = editText.getText().toString();
String number = editText2.getText().toString();
Intent i = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
i.putExtra("finishActivityOnSaveCompleted", true);
i.putExtra(ContactsContract.Intents.Insert.NAME, name);
ArrayList<ContentValues> list = new ArrayList<ContentValues>();
ContentValues v1 = new ContentValues();
v1.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
v1.put(ContactsContract.CommonDataKinds.Phone.NUMBER, number);
v1.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
list.add(v1);
if(integer > 0){
ContentValues[] v2 = new ContentValues[integer];
for(int integer2 = 1; integer2<integer; integer2++) {
int number2 = Integer.parseInt(editText3.getText().toString());
v2[integer2 - 1].put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
v2[integer2 - 1].put(ContactsContract.CommonDataKinds.Phone.NUMBER, number2);
v2[integer2 - 1].put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
list.add(v2[integer2 - 1]);
}
}
//i.putExtra(ContactsContract.Intents.Insert.PHONE, number);
//i.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
i.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, list);
startActivityForResult(i, RQ);
}
});
button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
integer++;
editText3 = new EditText(MainActivity.this);
editText3.setInputType(InputType.TYPE_CLASS_NUMBER);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(20, 30, 20, 0);
ll.addView(editText3, lp);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RQ){
if (resultCode == RESULT_OK){
if (data != null){
Intent in = new Intent(Intent.ACTION_VIEW, data.getData());
startActivity(in);
}
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
activity_main.xml
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:orientation="vertical"
android:id="@+id/ll">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:textSize="@dimen/activity_vertical_margin" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/textView"
android:layout_alignParentStart="true"
android:hint="@string/name" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentStart="true"
android:layout_alignEnd="@+id/editText"
android:hint="@string/number" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:id="@+id/button2" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/editText3"
android:longClickable="false"
android:visibility="invisible" />
</LinearLayout>
Doch da kriege ich dann folgende Fehlermeldung, wenn ich drei Nummern eingebe:
Code:
07-01 04:48:30.080 1894-1894/test.kontakte E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: test.kontakte, PID: 1894
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.ContentValues.put(java.lang.String, java.lang.String)' on a null object reference
at test.kontakte.MainActivity$1.onClick(MainActivity.java:59)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Was muss ich ändern, damit meine App läuft?
Danke für Antworten!